Diferencia entre revisiones de «Formulario API 2.0.N»

De FlexiPymeDocs
Ir a la navegación Ir a la búsqueda
(Página creada con «===Formulario API=== ==== Código de Referencia ==== <syntaxhighlight> using FlexiPyme.db; using FlexiPyme.entorno; using FlexiPyme.util; using FlexiPyme.ui.extras; usi…»)
 
 
Línea 8: Línea 8:
 
using FlexiPyme.db;
 
using FlexiPyme.db;
 
using FlexiPyme.entorno;
 
using FlexiPyme.entorno;
 +
using FlexiPyme.global;
 +
using FlexiPyme.ui.formularios.especificos.api;
 
using FlexiPyme.util;
 
using FlexiPyme.util;
using FlexiPyme.ui.extras;
 
using FlexiPyme.ui.formularios.especificos.api;
 
 
using Newtonsoft.Json;
 
using Newtonsoft.Json;
 
using System;
 
using System;
 
using System.Collections.Generic;
 
using System.Collections.Generic;
 
using System.Dynamic;
 
using System.Dynamic;
 +
using System.IO;
 
using System.Linq;
 
using System.Linq;
 
using System.Text;
 
using System.Text;
using FlexiPyme.global;
+
using System.Threading.Tasks;
using FlexiAplicacion.LogicaComun;
+
using System.Web.Script.Serialization;
 
+
 
namespace FlexiAplicacion.Extensiones
+
namespace FlexiDemo.Formularios.Stock
 
{
 
{
     public class frmMicrositioApi : FlexiApi
+
     public class frmProductosApi : FlexiApi
 
     {
 
     {
 
         public override void InicializarFormulario()
 
         public override void InicializarFormulario()
 
         {
 
         {
             this.PermitirAccesoAnonimo = false;
+
             this.PermitirAccesoAnonimo = true;
  
this.AgregarMetodo("CargarFormulario", new List<string>() {});
+
             this.AgregarMetodo("ListarProveedores", new List<string>() {"filtro"});
             this.AgregarMetodo("ListarProductos", new List<string>() {"texto", "pagina", "nwflowId"});
+
             this.AgregarMetodo("ListarProductosPorProveedor", new List<string>() {"idProveedor", "pagina"});
             this.AgregarMetodo("ObtenerImagen", new List<string>() {"idMicrositioProducto"});
+
             this.AgregarMetodo("ActualizarProveedor",  
            this.AgregarMetodo("QuitarProducto", new List<string>() {"idMicrositioProducto"});
 
            this.AgregarMetodo("Publicar", new List<string>() {});
 
           
 
             this.AgregarMetodo("AgregarProducto",  
 
 
                                     new List<FlexiApiParametro>()  
 
                                     new List<FlexiApiParametro>()  
                                     { new FlexiApiParametro("idProducto"),
+
                                     { new FlexiApiParametro("idProveedor"),
                                         new FlexiApiParametro("imagenBase64", FlexiApiParametroTipo.POST_BODY)
+
                                         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";
 +
 
         }
 
         }
  
Línea 45: Línea 47:
 
             json = "";
 
             json = "";
  
             if (metodo == "CargarFormulario")
+
             if (metodo == "ListarProveedores")
 
             {
 
             {
+
                string filtro = valores["filtro"];
                try
+
 
                 {
+
                 dynamic provs = new List<dynamic>();
               
 
                    dynamic lista = new List<dynamic>();
 
                   
 
                    string sql = @"select id, nombre from Rubros order by nombre";
 
                   
 
                    FlexiDbTabla ds = FlexiDb.Listar(sql);
 
  
int cantidadFilas = ds.Filas.Count;
+
                string sql = "select * from Proveedores ";
                   
 
  
                    foreach (FlexiDbFila fila in ds.Filas)
+
                if (filtro != "")
                    {
+
                    sql += " where razonSocial like '%' + @filtro + '%' ";
                    int idRubro = fila.ObtenerEntero("id");
 
                        dynamic obj = new ExpandoObject();
 
                        obj.id = idRubro;
 
                        obj.nombre = fila.ObtenerComoCadena("nombre");
 
                        lista.Add(obj);
 
                       
 
                        obj.productos = new List<dynamic>();
 
                       
 
                        // Productos de cada rubro
 
                        sql = @"select mp.id, p.nombre
 
                        from Productos p
 
                                inner join MicroSitioProductos mp on mp.idProducto = p.id
 
                                where  
 
                                p.idRubro = " + idRubro + " order by p.nombre";
 
                       
 
                        FlexiDbTabla dsProd = FlexiDb.Listar(sql);
 
                        foreach (FlexiDbFila filaProd in dsProd.Filas)
 
                        {
 
                        dynamic prod = new ExpandoObject();
 
                            prod.id = filaProd.ObtenerEntero("id");
 
                            prod.nombre = filaProd.ObtenerComoCadena("nombre");
 
                           
 
                            obj.productos.Add(prod);
 
                        }
 
                       
 
                    }
 
                   
 
                    dynamic resultado = new ExpandoObject();
 
                    resultado.lista = lista;
 
                    resultado.micrositioUrl = LogicaDeConfiguraciones.ObtenerMicrositioUrl();
 
  
                    json = JsonConvert.SerializeObject(resultado, Formatting.Indented);
+
                Dictionary<string, object> pars = new Dictionary<string, object>();
 +
                pars.Add("@filtro", filtro);
  
//throw new BusinessException("No se que pasaaaa");
 
 
                  
 
                  
                 } catch (Exception ex)
+
                 FlexiDbTabla ds = FlexiDb.Listar(sql, pars);
 +
               
 +
                foreach (FlexiDbFila fila in ds.Filas)
 
                 {
 
                 {
                json = "ERROR: " + ex.ToString();
+
                    dynamic prov = new ExpandoObject();
 +
                    prov.RazonSocial = fila.ObtenerComoCadena("razonSocial");
 +
                    prov.CUIT = fila.ObtenerComoCadena("cuit");
 +
                    provs.Add(prov);
 
                 }
 
                 }
 +
 
                  
 
                  
            }
 
            else if (metodo == "ListarProductos")
 
            {
 
 
                try
 
                {
 
                int itemsPorPagina = 200;
 
               
 
                    int pagina = int.Parse(valores["pagina"]);
 
                string texto = valores["texto"];
 
                    string nwflowId = valores["nwflowId"];
 
               
 
                   
 
                    dynamic lista = new List<dynamic>();
 
 
string sql = @"select p.*, pr.codigo as proveedorCodigo, r.codigo as rubroCodigo,
 
                    cast(round((select sum(ingreso-egreso) from MovimientosStockVW where idProducto = p.id),0) as int) as stock
 
                    from Productos p
 
                                    left join Proveedores pr on p.idProveedor = pr.id
 
                                    left join Rubros r on p.idRubro = r.id ";
 
                   
 
                    string sqlWhere = " where p.id > 0 ";
 
                   
 
                    if ( texto != "")
 
                    sqlWhere += " and (p.nombre like @texto + '%' or p.codigoBarras = @texto or cast(p.codigo as varchar(20)) = @texto) ";
 
                   
 
                    string sqlOrder = " order by p.nombre";
 
                   
 
                    Dictionary<string, object> pars = new Dictionary<string, object>();
 
                    pars.Add("@texto", texto);
 
                   
 
                    FlexiDbTabla ds = FlexiDb.Listar(sql + sqlWhere + sqlOrder, pars);
 
  
int cantidadFilas = ds.Filas.Count;
+
                //ds.AgregarFilaAlPrincipio
                   
 
                    // Paginar
 
                    ds.Paginar(pagina, itemsPorPagina);
 
  
                    foreach (FlexiDbFila fila in ds.Filas)
+
                json = JsonConvert.SerializeObject(provs, Formatting.Indented);
                    {
 
                        dynamic obj = new ExpandoObject();
 
                        obj.id = fila.ObtenerEntero("id");
 
                        obj.codigo = fila.ObtenerEntero("codigo");
 
                        obj.nombre = fila.ObtenerComoCadena("nombre");
 
                        obj.unidadCompra = fila.ObtenerComoCadena("unidadCompra");
 
                        obj.codigoBarras = fila.ObtenerComoCadena("codigoBarras");
 
                        obj.costo = fila.ObtenerMoneda("costo");
 
                        obj.precioProveedor = fila.ObtenerComoCadena("precioProveedor");
 
                        obj.precio1 = fila.ObtenerMoneda("precio1");
 
                        obj.precio2 = fila.ObtenerMoneda("precio2");
 
                        obj.proveedorCodigo = fila.ObtenerEntero("proveedorCodigo");
 
                        obj.rubroCodigo = fila.ObtenerComoCadena("rubroCodigo");
 
                        obj.discontinuado = fila.ObtenerBooleano("discontinuado");
 
                        obj.fechaModificacion = fila.ObtenerComoCadena("fechaModificacion");
 
                        obj.stock = fila.ObtenerEntero("stock");
 
                        lista.Add(obj);
 
                    }
 
  
int paginas = 0;
+
                //throw new BusinessException("Errorrrrrrrrrrrrrr");
                   
 
                    if ( cantidadFilas % itemsPorPagina != 0)
 
                    paginas = 1 + (cantidadFilas / itemsPorPagina);
 
                    else
 
                    paginas = (cantidadFilas / itemsPorPagina);
 
 
dynamic resultado = new ExpandoObject();
 
                    resultado.lista = lista;
 
                    resultado.cantidadFilas = cantidadFilas;
 
                    resultado.cantidadPaginas = paginas;
 
                   
 
  
                    json = JsonConvert.SerializeObject(resultado, Formatting.Indented);
 
               
 
                //throw new BusinessException("No se que pasaaaa");
 
               
 
                } catch (Exception ex)
 
                {
 
                json = "ERROR: " + ex.ToString();
 
                }
 
               
 
 
             }
 
             }
             else if (metodo == "AgregarProducto")
+
             else if (metodo == "ActualizarProveedor")
 
             {
 
             {
            dynamic msg = new ExpandoObject();
+
                 string idProveedor = valores["idProveedor"];
                  
+
                string datos = valores["datos"];
            try
 
                {
 
                    string idProducto = valores["idProducto"];
 
                    string imagenBase64 = valores["imagenBase64"];
 
                   
 
                    string base64 = imagenBase64.Substring(imagenBase64.IndexOf(',') + 1);
 
  
    base64 = base64.Trim('\0');
+
                string access_token = valores["access_token"];
    byte[] img = Convert.FromBase64String(base64);
 
  
 
+
                dynamic msg = new ExpandoObject();
                    string sql = "insert into MicroSitioProductos (idProducto, imagen) values (@idProducto, @imagen)";
+
                msg.mensaje = "OK.";
 
 
                    Dictionary<string, object> pars = new Dictionary<string, object>();
 
                    pars.Add("@idProducto", idProducto);
 
                    pars.Add("@imagen", img);
 
 
 
                    int idMicrositioProducto = FlexiDb.EjecutarInsert(sql, pars);
 
                   
 
                    // Subir imagen al sitio
 
                    LogicaDeMicrositios.SubirImagen(idMicrositioProducto, img);
 
 
 
                    msg.estado = "OK";
 
                    msg.idMicrositioProducto = idMicrositioProducto;
 
               
 
                }
 
                catch( Exception ex)
 
                {
 
                msg.estado = "ERROR";
 
                    msg.mensaje = ex.ToString();
 
                }
 
  
 
                 json = JsonConvert.SerializeObject(msg, Formatting.Indented);
 
                 json = JsonConvert.SerializeObject(msg, Formatting.Indented);
 
                  
 
                  
 
             }
 
             }
             else if (metodo == "ObtenerImagen")
+
              
            {
+
        }
 
                try
 
                {
 
                int idMicrositioProducto = Convert.ToInt32(valores["idMicrositioProducto"]);
 
                   
 
                    FlexiDbFila filaDB = FlexiDb.CargarEntidad(idMicrositioProducto, "MicroSitioProductos");
 
                    byte[] datos = filaDB.ObtenerBinario("imagen");
 
  
string archivoNombre = "imagen" + idMicrositioProducto + ".jpg";
+
        public override void EjecutarMetodoBinario(string metodo, Dictionary<string, string> valores, out byte[] datos)
 +
        {
 +
            datos = null;
  
System.Web.HttpContext.Current.Response.Clear();
+
             if (metodo == "ObtenerBinario")
                    System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + archivoNombre);
 
                    System.Web.HttpContext.Current.Response.AddHeader("Content-Length", datos.Length.ToString());
 
                    System.Web.HttpContext.Current.Response.ContentType = "image/jpeg";
 
                    System.Web.HttpContext.Current.Response.BinaryWrite(datos);
 
                    System.Web.HttpContext.Current.Response.End();
 
               
 
                } catch (Exception ex)
 
                {
 
                json = "ERROR: " + ex.ToString();
 
                }
 
               
 
            }
 
             else if (metodo == "QuitarProducto")
 
 
             {
 
             {
 
                dynamic msg = new ExpandoObject();
 
               
 
            try
 
                {
 
                    int idMicrositioProducto = Convert.ToInt32(valores["idMicrositioProducto"]);
 
                    string sql = "delete from  MicroSitioProductos where id = " + idMicrositioProducto;
 
 
                    Dictionary<string, object> pars = new Dictionary<string, object>();
 
 
                    FlexiDb.EjecutarUpdate(sql, pars);
 
                   
 
                    // Quitar imagen del sitio
 
                    //LogicaDeMicrositios.QuitarImagen(idMicrositioProducto);
 
  
                    msg.estado = "OK";
+
                datos = File.ReadAllBytes(Archivos.CaminoRealCarpetaArchivosPublicos + "sem_rojo.jpg");
               
 
                }
 
                catch( Exception ex)
 
                {
 
                msg.estado = "ERROR";
 
                    msg.mensaje = ex.ToString();
 
                }
 
  
                json = JsonConvert.SerializeObject(msg, Formatting.Indented);
 
               
 
 
             }
 
             }
            else if (metodo == "Publicar")
 
            {
 
 
                dynamic msg = new ExpandoObject();
 
               
 
            try
 
                {
 
                    LogicaDeMicrositios.Publicar();
 
  
                    msg.estado = "OK";
 
               
 
                }
 
                catch( Exception ex)
 
                {
 
                msg.estado = "ERROR";
 
                    msg.mensaje = ex.ToString();
 
                }
 
 
                json = JsonConvert.SerializeObject(msg, Formatting.Indented);
 
               
 
            }
 
           
 
           
 
 
         }
 
         }
 
     }
 
     }
 
}
 
}
 +
  
  
 
</syntaxhighlight>
 
</syntaxhighlight>

Revisión actual del 11:20 18 oct 2023

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");

            }

        }
    }
}