Formulario API 2.0.N

De FlexiPymeDocs
Ir a la navegación Ir a la búsqueda

Formulario API

Código de Referencia

using FlexiPyme.db;
using FlexiPyme.entorno;
using FlexiPyme.global;
using FlexiPyme.ui.formularios.especificos.api;
using FlexiPyme.util;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;

namespace FlexiDemo.Formularios.Stock
{
    public class frmProductosApi : FlexiApi
    {
        public override void InicializarFormulario()
        {
            this.PermitirAccesoAnonimo = true;

            this.AgregarMetodo("ListarProveedores", new List<string>() {"filtro"});
            this.AgregarMetodo("ListarProductosPorProveedor", new List<string>() {"idProveedor", "pagina"});
            this.AgregarMetodo("ActualizarProveedor", 
                                    new List<FlexiApiParametro>() 
                                    { new FlexiApiParametro("idProveedor"),
                                        new FlexiApiParametro("datos", FlexiApiParametroTipo.POST_BODY),
                                        new FlexiApiParametro("access_token", FlexiApiParametroTipo.HEADER)
                                    });
            this.AgregarMetodo("ObtenerBinario", new List<string>() { });
            this.BuscarMetodo("ObtenerBinario").TipoRetorno = FlexiApiMetodoTipoRetorno.BINARIO;
            this.BuscarMetodo("ObtenerBinario").ContentTypeRespuesta = "image/jpeg";

        }

        public override void EjecutarMetodo(string metodo, Dictionary<string, string> valores, out string json)
        {
            json = "";

            if (metodo == "ListarProveedores")
            {
                string filtro = valores["filtro"];

                dynamic provs = new List<dynamic>();

                string sql = "select * from Proveedores ";

                if (filtro != "")
                    sql += " where razonSocial like '%' + @filtro + '%' ";

                Dictionary<string, object> pars = new Dictionary<string, object>();
                pars.Add("@filtro", filtro);

                
                FlexiDbTabla ds = FlexiDb.Listar(sql, pars);
                
                foreach (FlexiDbFila fila in ds.Filas)
                {
                    dynamic prov = new ExpandoObject();
                    prov.RazonSocial = fila.ObtenerComoCadena("razonSocial");
                    prov.CUIT = fila.ObtenerComoCadena("cuit");
                    provs.Add(prov);
                }

                

                //ds.AgregarFilaAlPrincipio

                json = JsonConvert.SerializeObject(provs, Formatting.Indented);

                //throw new BusinessException("Errorrrrrrrrrrrrrr");

            }
            else if (metodo == "ActualizarProveedor")
            {
                string idProveedor = valores["idProveedor"];
                string datos = valores["datos"];

                string access_token = valores["access_token"];

                dynamic msg = new ExpandoObject();
                msg.mensaje = "OK.";

                json = JsonConvert.SerializeObject(msg, Formatting.Indented);
                
            }
            
        }

        public override void EjecutarMetodoBinario(string metodo, Dictionary<string, string> valores, out byte[] datos)
        {
            datos = null;

            if (metodo == "ObtenerBinario")
            {

                datos = File.ReadAllBytes(Archivos.CaminoRealCarpetaArchivosPublicos + "sem_rojo.jpg");

            }

        }
    }
}