public async Task <IActionResult> Post([FromBody] CompraEquipo compraEquipo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { compraEquipo.FechaCreacion = DateTime.Now; compraEquipo.Costo = compraEquipo.Items.Sum(x => x.Costo); sn.Save(compraEquipo); foreach (var item in compraEquipo.Items) { InventarioEquipo inventario = await sn.Query <InventarioEquipo>() .Where(x => x.IdAlmacen == compraEquipo.Almacen.Id && x.IdEquipo == item.Equipo.Id) .FirstOrDefaultAsync(); if (inventario == null) { sn.Save(new InventarioEquipo { IdAlmacen = compraEquipo.Almacen.Id, IdEquipo = item.Equipo.Id, Stock = item.Cantidad }); } else { inventario.Stock += item.Cantidad; } item.IdCompraEquipo = compraEquipo.Id; sn.Save(item); } await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }
public async Task <IActionResult> DeleteCompraEquipo([FromRoute] int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { CompraEquipo compraEquipo = sn.Get <CompraEquipo>(id); List <CompraEquipoItem> items = await sn.Query <CompraEquipoItem>() .Where(x => x.IdCompraEquipo == id) .ToListAsync(); foreach (var item in items) { InventarioEquipo inventario = await sn.Query <InventarioEquipo>() .Where(x => x.IdAlmacen == compraEquipo.Almacen.Id && x.IdEquipo == item.Equipo.Id) .FirstOrDefaultAsync(); if (inventario != null && inventario.Stock >= item.Cantidad) { inventario.Stock -= item.Cantidad; } else { throw new Exception("Sin stock para el equipo: " + item.Equipo.Nombre); } } sn.Delete(string.Format("FROM CompraEquipoItem WHERE IdCompraEquipo = {0}", id)); sn.Delete(compraEquipo); await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }
public async Task <IActionResult> Post([FromBody] AsignacionEquipo asignacionEquipo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { asignacionEquipo.FechaCreacion = DateTime.Now; sn.Save(asignacionEquipo); foreach (var item in asignacionEquipo.Items) { InventarioEquipo inventario = await sn.Query <InventarioEquipo>() .Where(x => x.IdAlmacen == asignacionEquipo.Almacen.Id && x.IdEquipo == item.Equipo.Id) .FirstOrDefaultAsync(); if (inventario != null && inventario.Stock >= item.Cantidad) { inventario.Stock -= item.Cantidad; } else { throw new Exception("Sin stock para el equipo: " + item.Equipo.Nombre); } item.IdAsignacionEquipo = asignacionEquipo.Id; sn.Save(item); } await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }
public async Task <IActionResult> DeleteAsignacionEquipo([FromRoute] int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } using (var sn = factory.OpenSession()) { using (var tx = sn.BeginTransaction()) { try { AsignacionEquipo asignacionEquipo = sn.Get <AsignacionEquipo>(id); List <AsignacionEquipoItem> items = await sn.Query <AsignacionEquipoItem>() .Where(x => x.IdAsignacionEquipo == id) .ToListAsync(); foreach (var item in items) { InventarioEquipo inventario = await sn.Query <InventarioEquipo>() .Where(x => x.IdAlmacen == asignacionEquipo.Almacen.Id && x.IdEquipo == item.Equipo.Id) .FirstOrDefaultAsync(); inventario.Stock += item.Cantidad; } sn.Delete(string.Format("FROM AsignacionEquipoItem WHERE IdAsignacionEquipo = {0}", id)); sn.Delete(asignacionEquipo); await tx.CommitAsync(); } catch (Exception ex) { await tx.RollbackAsync(); return(StatusCode(500, ex.Message)); } } } return(Ok(true)); }