public ActionResult _AddEditGasto(Int32?GastoId, Int32 EdificioId) { AddEditGastoViewModel ViewModel = new AddEditGastoViewModel(); ViewModel.GastoId = GastoId; ViewModel.EdificioId = EdificioId; ViewModel.Fill(CargarDatosContext()); ViewModel.FillComboUnidadTiempo(CargarDatosContext()); return(PartialView(ViewModel)); }
public ActionResult AddEditGasto(AddEditGastoViewModel ViewModel) { if (!ModelState.IsValid) { ViewModel.Fill(CargarDatosContext()); ViewModel.FillComboUnidadTiempo(CargarDatosContext()); TryUpdateModel(ViewModel); return(View(ViewModel)); } try { if (ViewModel.GastoId.HasValue) { var unidadDeTiempo = context.UnidadTiempo.FirstOrDefault(x => x.UnidadTiempoId == ViewModel.UnidadTiempoId); if (context.Gasto.Any(x => x.GastoId != ViewModel.GastoId && x.EdificioId == ViewModel.EdificioId && x.Estado.Equals(ConstantHelpers.EstadoActivo) && x.UnidadTiempo.Mes == unidadDeTiempo.Mes && x.UnidadTiempo.Anio == unidadDeTiempo.Anio)) { //Ya existe, retornar error de Already exist PostMessage(MessageType.AExist); return(RedirectToAction("LstGastoAdmin", new { EdificioId = ViewModel.EdificioId })); } Gasto gasto = context.Gasto.FirstOrDefault(x => x.GastoId == ViewModel.GastoId.Value); gasto.UnidadTiempoId = ViewModel.UnidadTiempoId; gasto.CuentasPorCobrarO = ViewModel.CuentasPorCobrarO; gasto.CuentasPorCobrarE = ViewModel.CuentasPorCobrarE; context.Entry(gasto).State = System.Data.Entity.EntityState.Modified; } else { var unidadDeTiempo = context.UnidadTiempo.FirstOrDefault(x => x.UnidadTiempoId == ViewModel.UnidadTiempoId); if (context.Gasto.Any(x => x.EdificioId == ViewModel.EdificioId && x.Estado.Equals(ConstantHelpers.EstadoActivo) && x.UnidadTiempo.Mes == unidadDeTiempo.Mes && x.UnidadTiempo.Anio == unidadDeTiempo.Anio)) { //Ya existe, retornar error de Already exist PostMessage(MessageType.AExist); return(RedirectToAction("LstGastoAdmin", new { EdificioId = ViewModel.EdificioId })); } Gasto gasto = new Gasto(); gasto.EdificioId = ViewModel.EdificioId; gasto.UnidadTiempoId = ViewModel.UnidadTiempoId; gasto.FechaRegistro = DateTime.Now; gasto.Estado = ConstantHelpers.EstadoActivo; gasto.CuentasPorCobrarO = ViewModel.CuentasPorCobrarO; gasto.CuentasPorCobrarE = ViewModel.CuentasPorCobrarE; context.Gasto.Add(gasto); context.SaveChanges(); //Copia de los gastos de la unidad de tiempo antigua del mismo edificio Gasto tempGasto = context.Gasto.OrderByDescending(X => X.FechaRegistro).FirstOrDefault(x => x.EdificioId == gasto.EdificioId && (x.UnidadTiempoId != gasto.UnidadTiempoId && x.UnidadTiempo.Estado.Equals(ConstantHelpers.EstadoActivo))); if (tempGasto != null) { context.DetalleGasto.Where(x => x.GastoId == tempGasto.GastoId).ToList().ForEach(x => { x.GastoId = gasto.GastoId; x.Monto = 0; context.DetalleGasto.Add(x); } ); } } context.SaveChanges(); PostMessage(MessageType.Success); } catch { PostMessage(MessageType.Error); } return(RedirectToAction("LstGastoAdmin", new { EdificioId = ViewModel.EdificioId })); }