/// <Sumary> /// Este método se utiliza para registrar un Inventario: /// - Nuevo con productos seleccionados /// - Con o sin productos /// - Finalizado o No finalizado /// Para acceder a esta funcionalidad de la API, llamar: http://localhost:52766/api/Inventario/submitInventory /// Para llamar a este método, se deberá enviar un Json desde el body request del tipo: // Nuevo Inventario solo encabezado: //{ "InventarioNombre": "Nuevo Inventario Guardar Sin Finalizar", "FolioGoma": "NuevoInvSF001", "Finalizado":false, "InvId": -1 } // Nuevo Inventario con Productos No Finalizado: //{ "InventarioNombre": "InventarioFinalizadoDesdeLaApi9", "FolioGoma": "INV-IAPI-009", "Finalizado":false, "InvId": -1, //"ListaDeProductos":[ // {"id": 9, "descripcion": "Descripción del producto 9","proveedorId": 3, "existencia": 500}, // {"id": 19, "descripcion": "Descripción del producto 19", "proveedorId": 2, "existencia": 250}] } //Nuevo Inventario con productos Finalizado: //{ "InventarioNombre": "InventarioFinalizadoDesdeLaApi9", "FolioGoma": "INV-IAPI-009", "Finalizado":true, "InvId": -1, //"ListaDeProductos":[ // {"id": 9, "descripcion": "Descripción del producto 9","proveedorId": 3, "existencia": 500}, // {"id": 19, "descripcion": "Descripción del producto 19", "proveedorId": 2, "existencia": 250}] } //Modificacion de inventario(solo datos) sin finalizar: //{ "InventarioNombre": "Inventario modificado desde API", "FolioGoma": "INV-IAPI-555", "Finalizado":false, "InvId": 62 } //Modificación de inventario(solo datos) Finalizado: //{ "InventarioNombre": "Inventario modificado desde API", "FolioGoma": "INV-IAPI-555", "Finalizado":true,"InvId": 62 } //Modif de inventario con producto sin finalizar: //{ "InventarioNombre": "Inventario Actualizado", "FolioGoma": "INV-IAPI-009", "Finalizado":false, "InvId": 61, // "ListaDeProductos":[ // {"id": 9, "descripcion": "Descripción del producto 9","proveedorId": 3, "existencia": 500}, // {"id": 19, "descripcion": "Descripción del producto 19", "proveedorId": 2, "existencia": 250}] } //Modif de Inventario con producto Finalizado: //{ "InventarioNombre": "Inventario Actualizado", "FolioGoma": "INV-IAPI-009", "Finalizado":true, "InvId": 61, //"ListaDeProductos":[ // {"id": 9, "descripcion": "Descripción del producto 9","proveedorId": 3, "existencia": 500}, // {"id": 19, "descripcion": "Descripción del producto 19", "proveedorId": 2, "existencia": 250}] } /// <Sumary/> /// <param name="Submit"></param> /// <returns>Mensaje de Error y Exito</returns> public IActionResult Submit([FromBody] InventarioJson item) { var header = Request.Headers["Authorization"].ToString(); header = header.ToString().Substring("Bearer ".Length).Trim(); var ArrHeader = header.Split("."); var payload = ArrHeader[1].ToString(); /*Inicia la Validación de la petición: */ bool valida; valida = new Validaciones().EjecutaValidacion(payload, "SubmitInventory"); if (valida) { bool finalizado = item.Finalizado; int InvId = item.InvId; if (InvId <= 0) //Es un Inventario Nuevo { try { using (var context = new Oxxo2.DataAccess.OxxoContext()) { // Registro Inventario var Inventario = context.Inventario.FromSql("spInsInventario @p0, @p1", item.InventarioNombre, item.FolioGoma).ToList(); context.SaveChanges(); //Si se guardó como finalizado, se finaliza el inventario if (finalizado) { int idInv = Inventario.ElementAt(0).InventarioId; Inventario = context.Inventario.FromSql("spUpdFinalizaInventario @p0", idInv).ToList(); } //Si tiene Productos, se realiza el Registro de productos if (item.ListaDeProductos != null) { IEnumerable <SubListaProductosJson> Lista = item.ListaDeProductos; foreach (var producto in Lista) { var ProductsInvent = context.InventarioProducto.FromSql("spInsProdInventario @p0, @p1, @p2", producto.id, Inventario.ElementAt(0).InventarioId, producto.proveedorId).ToList(); } } //Aquí se deberá regresar el algunos valores del Inventario registrado, para mostrarlos en la APP. //return Ok("El inventario con Id: " + Inventario.ElementAt(0).InventarioId.ToString() + " Fue registrado"); return(Ok(Inventario)); } } catch (Exception e) { return(BadRequest("No se registró en la B.D" + e)); } } else { //Aquí se va a llamar el registro de modificacion de inventarios try { using (var context = new Oxxo2.DataAccess.OxxoContext()) { // Actualización de datos del Inventario var Inventario = context.Inventario.FromSql("spUpdInventario @p0, @p1, @p2", InvId, item.InventarioNombre, item.FolioGoma).ToList(); context.SaveChanges(); //Si se guardó como finalizado, se finaliza el inventario if (finalizado) { Inventario = context.Inventario.FromSql("spUpdFinalizaInventario @p0", InvId).ToList(); } //Si tiene Productos, se realiza el Registro de productos if (item.ListaDeProductos != null) { //primero elimino todos los productos del Inventario var delProdInv = context.Inventario.FromSql("spDelProductosInv @p0", InvId).ToList(); IEnumerable <SubListaProductosJson> Lista = item.ListaDeProductos; foreach (var producto in Lista) { var ProductsInvent = context.InventarioProducto.FromSql("spInsProdInventario @p0, @p1, @p2", producto.id, Inventario.ElementAt(0).InventarioId, producto.proveedorId).ToList(); } } //Aquí se deberá regresar el algunos valores del Inventario registrado, para mostrarlos en la APP. return(Ok("El inventario con Id: " + Inventario.ElementAt(0).InventarioId.ToString() + " Fue actualizado")); //return (Inventario); } } catch (Exception e) { return(BadRequest("No se registró en la B.D" + e)); } } } else { return(BadRequest("La petición no es válida")); } /*Finaliza la Validación de la petición */ }
/// <summary> /// Este Método devuelve los datos del inventario incompleto seleccionado /// Además devuelve la lista de Productos del proveedor asociado. /// Además devuelve una bandera por cada producto, dónde indica Si este fue seleccionado o no. /// para que el usuario pueda acceder a estos y realizar las modificaciones necesarias para continuar con el inventario. /// Para acceder a este método, se debe enviar un post request a: http://localhost:52766/api/Inventario/modifInvent /// La petición debe contener un Json el id del Inventario. /// </summary> /// <returns>IActionResult Json con la Lista de Inventarios con Estatus Incompleto</returns> public IActionResult ModificaInventario([FromBody] InventarioJson InventModif) { /*Declaracion de variables*/ //int InvId = InventModif.InvId; string InvNombre; string InvFolio; var header = Request.Headers["Authorization"].ToString(); header = header.ToString().Substring("Bearer ".Length).Trim(); var ArrHeader = header.Split("."); var payload = ArrHeader[1].ToString(); /*Inicia la Validación de la petición: */ bool valida; valida = new Validaciones().EjecutaValidacion(payload, "Lista Inventario Incompleto"); if (valida) { try { using (var context = new Oxxo2.DataAccess.OxxoContext()) { //Tomo los datos del Inventario del Id que recibo como parámetro: var InventIncompleto = context.Inventario.FromSql("spGetInventarioById @p0", InventModif.InvId).ToList(); //Si el inventario existe: if (InventIncompleto.Count > 0) { InvNombre = InventIncompleto.ElementAt(0).InventarioNombre.ToString(); InvFolio = InventIncompleto.ElementAt(0).Folio_Goma.ToString(); // Hacer procedimiento que regrese la lista de ProductosInventario por Id de Inventario var ProductosInventario = context.InventarioProducto.FromSql("spGetProdInventIncompleto @p0", InventModif.InvId).ToList(); if (ProductosInventario.Count <= 0) //Este if es para los Inventarios que NO tienen producto { InventarioJson Respuesta = new InventarioJson { InvId = InventModif.InvId, InventarioNombre = InvNombre, FolioGoma = InvFolio }; return(Ok(Respuesta)); } else // Este else corresponde a los inventarios que Si tienen productos { int IdProveed = ProductosInventario.ElementAt(0).ProveedorId; // Aquí guardo el ID del proveedor si existe //foreach (var producto in ListaProductos) //{ // SubListaProductosJson SubListaProductosRespuesta = new SubListaProductosJson(); // SubListaProductosRespuesta.selected = false; // foreach (var selected in ProductosInventario) // { // if (producto.ProductoId == selected.ProductoId) // { // SubListaProductosRespuesta.selected = true; // } // } // SubListaProductosRespuesta.id = producto.ProductoId; // SubListaProductosRespuesta.descripcion = producto.productoDescr; // SubListaProductosRespuesta.proveedorId = producto.ProveedorId; // SubListaProductosRespuesta.existencia = 0; // List<SubListaProductosJson> list = new List<SubListaProductosJson> // { // SubListaProductosRespuesta // }; //} var ListaProductos = context.Producto.FromSql("spGetProdByProveed @p0", IdProveed).ToList(); InventarioJson InventarioRespuesta = new InventarioJson { InvId = InventModif.InvId, InventarioNombre = InvNombre, FolioGoma = InvFolio, ListaDeProductos = new List <SubListaProductosJson>() }; foreach (var item in ListaProductos) { var exists = false; foreach (var flag in ProductosInventario) { if (flag.ProductoId == item.ProductoId) { exists = true; } } SubListaProductosJson sublista = new SubListaProductosJson { id = item.ProductoId, descripcion = item.productoDescr, proveedorId = IdProveed, existencia = 0, selected = exists }; InventarioRespuesta.ListaDeProductos.Add((SubListaProductosJson)sublista); } // si el resultado no está vacía, acompleto la lista con los demás productos del proveedor. return(Ok(InventarioRespuesta)); } } else { return(BadRequest("No se encontró el inventario solicitado")); } } } catch (Exception e) { return(BadRequest(e)); } } else { return(BadRequest("La petición no es válida")); } /*Finaliza la Validación de la petición */ }