public async Task <IActionResult> PostSalidaInsumo([FromBody] SalidaInsumo salidaInsumo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { salidaInsumo.FechaCreacion = DateTime.Now; sn.Save(salidaInsumo); foreach (var item in salidaInsumo.Items) { InventarioInsumo inventario = await sn.Query <InventarioInsumo>() .Where(x => x.IdAlmacen == salidaInsumo.Almacen.IdAlmacen && x.IdInsumo == item.Insumo.IdProducto) .FirstOrDefaultAsync(); if (inventario != null && inventario.Stock >= (item.Cantidad * item.Factor)) { inventario.Stock = inventario.Stock - (item.Cantidad * item.Factor); } else { throw new Exception("Sin stock para el insumo: " + item.Insumo.Nombre); } item.IdSalidaInsumo = salidaInsumo.IdSalidaInsumo; sn.Save(item); } await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }
public async Task <IActionResult> DeleteSalidaInsumo([FromRoute] int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { SalidaInsumo salidaInsumo = sn.Get <SalidaInsumo>(id); List <ItemSalidaInsumo> items = await sn.Query <ItemSalidaInsumo>() .Where(x => x.IdSalidaInsumo == id) .ToListAsync(); foreach (var item in items) { InventarioInsumo inventario = await sn.Query <InventarioInsumo>() .Where(x => x.IdAlmacen == salidaInsumo.Almacen.IdAlmacen && x.IdInsumo == item.Insumo.IdProducto) .FirstOrDefaultAsync(); inventario.Stock = inventario.Stock + (item.Cantidad * item.Factor); } sn.Delete(string.Format("FROM ItemSalidaInsumo WHERE IdSalidaInsumo = {0}", id)); sn.Delete(salidaInsumo); await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }
public async Task <IActionResult> GetSalidaInsumo([FromRoute] int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } SalidaInsumo salidaInsumo = null; using (var sn = factory.OpenSession()) { salidaInsumo = await sn.GetAsync <SalidaInsumo>(id); salidaInsumo.Items = await sn.Query <ItemSalidaInsumo>().Where(x => x.IdSalidaInsumo == id).ToListAsync(); } if (salidaInsumo == null) { return(NotFound()); } return(Ok(salidaInsumo)); }
public async Task <IActionResult> PutSalidaInsumo([FromRoute] int id, [FromBody] SalidaInsumo salidaInsumo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != salidaInsumo.IdSalidaInsumo) { return(BadRequest()); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { List <ItemSalidaInsumo> items = await sn.Query <ItemSalidaInsumo>() .Where(x => x.IdSalidaInsumo == id) .ToListAsync(); foreach (var item in items) { InventarioInsumo inventario = await sn.Query <InventarioInsumo>() .Where(x => x.IdAlmacen == salidaInsumo.Almacen.IdAlmacen && x.IdInsumo == item.Insumo.IdProducto) .FirstOrDefaultAsync(); inventario.Stock = inventario.Stock + (item.Cantidad * item.Factor); } sn.Delete(string.Format("FROM ItemSalidaInsumo WHERE IdSalidaInsumo = {0}", id)); foreach (var item in salidaInsumo.Items) { InventarioInsumo inventario = await sn.Query <InventarioInsumo>() .Where(x => x.IdAlmacen == salidaInsumo.Almacen.IdAlmacen && x.IdInsumo == item.Insumo.IdProducto) .FirstOrDefaultAsync(); if (inventario != null && inventario.Stock >= (item.Cantidad * item.Factor)) { inventario.Stock = inventario.Stock - (item.Cantidad * item.Factor); } else { throw new Exception("Sin stock para el insumo: " + item.Insumo.Nombre); } item.IdSalidaInsumo = id; sn.Save(item); } SalidaInsumo salidaInsumoBD = sn.Get <SalidaInsumo>(id); salidaInsumoBD.IdLote = salidaInsumo.IdLote; salidaInsumoBD.Comentario = salidaInsumo.Comentario; await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }