Пример #1
0
        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));
        }
Пример #2
0
        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 }));
        }