public async Task <IActionResult> PrestarInsumos(string prestamos, string documento) { if (User.Identity.IsAuthenticated) { string permiso = Permisos("PermisoSubModulo").PSMAPB ? "PermisoSubModulo" : "PermisoModulo"; bool crear = Permisos(permiso).PMMAPL.Where(w => w.Value.Contains("Crear")).Any(); if (crear) { dynamic prestamosJson = JsonConvert.DeserializeObject(prestamos); List <Col_Prestamos> _prestamos = new List <Col_Prestamos>(); foreach (dynamic item in prestamosJson) { Col_Prestamos _prestamo = new Col_Prestamos(); _prestamo.Cantidad = item.Cantidad; _prestamo.FechaPrestamo = Convert.ToDateTime(item.FechaPrestamo.ToString()); _prestamo.Motivo = item.Motivo; _prestamo.SuministroId = item.SuministroId; _prestamos.Add(_prestamo); } ApiCallResult data = await service.PrestarInsumos(_prestamos, documento); return(Json(data)); } else { return(NotFound()); } } else { return(RedirectToAction("Index", "Login")); } }
public async Task <ApiCallResult> DevolverInsumos(List <Devoluciones> devoluciones) { try { bool status = false; string title = "Error"; string message = "Error al devolver el insumo"; bool query = devoluciones.Where(w => !w.Devolver.Equals(0)).Any(); if (query) { foreach (Devoluciones item in devoluciones) { List <Col_Prestamos> _prestamos = await context.Col_Prestamos .Where(w => w.PersonaId.Equals(item.IdPersona) && w.SuministroId.Equals(item.SuministroId) && w.Estado.Equals("A")) .ToListAsync(); int faltante = item.Devolver; foreach (Col_Prestamos temp in _prestamos) { if (faltante > 0) { int cantidadRestar = 0; for (int i = 1; i <= item.Devolver; i++) { if ((temp.Cantidad - i) >= 0) { cantidadRestar = i; } } faltante -= cantidadRestar; Col_Prestamos _prestamo = await context.Col_Prestamos .Where(w => w.PrestamoId.Equals(temp.PrestamoId)).FirstOrDefaultAsync(); _prestamo.Cantidad -= cantidadRestar; _prestamo.Estado = _prestamo.Cantidad == 0 ? "I" : "A"; _prestamo.FechaActualizacion = DateTime.Now; context.Col_Prestamos.Update(_prestamo); await context.SaveChangesAsync(); } } Col_Suministros suministro = await context.Col_Suministros .Where(w => w.SuministroId.Equals(item.SuministroId)).FirstOrDefaultAsync(); suministro.Stock += item.Devolver; suministro.FechaActualizacion = DateTime.Now; context.Col_Suministros.Update(suministro); } await context.SaveChangesAsync(); status = true; title = "Proceso éxitosa"; message = "¡Si hizo la devolución de los insumos satisfactoriamente!"; } else { status = false; title = "Proceso incorrecto"; message = "¡Al menos tienes que devolver un insumo!"; } return(new ApiCallResult { Status = status, Title = title, Message = message }); } #region catch catch (DbEntityValidationException e) { string err = ""; foreach (DbEntityValidationResult eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (DbValidationError ve in eve.ValidationErrors) { err += ve.ErrorMessage; Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } return(new ApiCallResult { Status = false, Title = "Error al guardar", Message = "Favor contacte éste con el administrador" }); } catch (Exception e) { string err = ""; if (e.InnerException != null) { if (e.InnerException.Message != null) { err = (e.InnerException.Message); if (e.InnerException.InnerException != null) { err += e.InnerException.InnerException.Message; } } } else { err = (e.Message); } return(new ApiCallResult { Status = false, Title = "Error al guardar", Message = "Favor contacte éste con el administrador" }); } #endregion }
public async Task <ApiCallResult> PrestarInsumos(List <Col_Prestamos> prestamos, string documento) { try { bool status = false; string title = "Error"; string message = "Error al ingresar el prestamo"; Col_Personas personaId = await context.Col_Personas .Where(w => w.NumeroDocumento.Equals(documento) && w.Estado.Equals("A")) .FirstOrDefaultAsync(); if (personaId != null) { List <Col_Suministros> suministros = await context.Col_Suministros.ToListAsync(); List <Col_Suministros> cantidadSuperior = suministros .Where(w => w.Stock < prestamos.Where(p => p.SuministroId == w.SuministroId) .Select(s => s.Cantidad).Sum()).ToList(); if (cantidadSuperior.Any()) { return(new ApiCallResult { Status = false, Title = "Error de stock", Message = "Asegurate de que la cantidad elegida del insumo quitado no sobrepase el stock", Comodin = cantidadSuperior.Select(s => s.SuministroId).FirstOrDefault() }); } status = true; title = "Proceso exitoso"; message = $"El prestamo se guardó correctamente al empleado con documento {documento}"; int?maxId = await context.Col_Prestamos.MaxAsync(m => (int?)m.PrestamoId); int?id = maxId == null ? 1 : maxId + 1; List <Col_Prestamos> _prestamos = new List <Col_Prestamos>(); foreach (Col_Prestamos item in prestamos) { Col_Prestamos _prestamo = new Col_Prestamos(); _prestamo.PrestamoId = Convert.ToInt32(id); _prestamo.PersonaId = personaId.PersonaId; _prestamo.SuministroId = item.SuministroId; _prestamo.Motivo = item.Motivo; _prestamo.FechaPrestamo = item.FechaPrestamo; _prestamo.FechaCreacion = DateTime.Now; _prestamo.Cantidad = item.Cantidad; _prestamo.Estado = "A"; _prestamos.Add(_prestamo); id++; Col_Suministros _suministro = await context.Col_Suministros .Where(w => w.SuministroId.Equals(item.SuministroId)).FirstOrDefaultAsync(); _suministro.Stock -= item.Cantidad; context.Col_Suministros.Update(_suministro); } await context.AddRangeAsync(_prestamos); await context.SaveChangesAsync(); } return(new ApiCallResult { Status = status, Title = title, Message = message }); } #region catch catch (DbEntityValidationException e) { string err = ""; foreach (DbEntityValidationResult eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (DbValidationError ve in eve.ValidationErrors) { err += ve.ErrorMessage; Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } return(new ApiCallResult { Status = false, Title = "Error al guardar", Message = "Favor contacte éste con el administrador" }); } catch (Exception e) { string err = ""; if (e.InnerException != null) { if (e.InnerException.Message != null) { err = (e.InnerException.Message); if (e.InnerException.InnerException != null) { err += e.InnerException.InnerException.Message; } } } else { err = (e.Message); } return(new ApiCallResult { Status = false, Title = "Error al guardar", Message = "Favor contacte éste con el administrador" }); } #endregion }