示例#1
0
        public ActionResult _AddEditIngreso(Int32?IngresoId, Int32 EdificioId)
        {
            AddEditIngresoViewModel ViewModel = new AddEditIngresoViewModel();

            ViewModel.IngresoId  = IngresoId;
            ViewModel.EdificioId = EdificioId;
            ViewModel.Fill(CargarDatosContext());
            ViewModel.FillComboUnidadTiempo(CargarDatosContext());
            return(PartialView(ViewModel));
        }
示例#2
0
        public ActionResult AddEditIngreso(AddEditIngresoViewModel ViewModel)
        {
            if (!ModelState.IsValid)
            {
                ViewModel.Fill(CargarDatosContext());
                ViewModel.FillComboUnidadTiempo(CargarDatosContext());
                TryUpdateModel(ViewModel);
                return(View(ViewModel));
            }

            try
            {
                if (ViewModel.IngresoId.HasValue)
                {
                    var unidadDeTiempo = context.UnidadTiempo.FirstOrDefault(x => x.UnidadTiempoId == ViewModel.UnidadTiempoId);
                    if (context.Ingreso.Any(x => x.IngresoId != ViewModel.IngresoId && 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("LstIngresoAdmin", new { EdificioId = ViewModel.EdificioId }));
                    }

                    Ingreso ingreso = context.Ingreso.FirstOrDefault(x => x.IngresoId == ViewModel.IngresoId.Value);
                    ingreso.UnidadTiempoId       = ViewModel.UnidadTiempoId;
                    context.Entry(ingreso).State = System.Data.Entity.EntityState.Modified;
                }
                else
                {
                    var unidadDeTiempo = context.UnidadTiempo.FirstOrDefault(x => x.UnidadTiempoId == ViewModel.UnidadTiempoId);
                    if (context.Ingreso.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("LstIngresoAdmin", new { EdificioId = ViewModel.EdificioId }));
                    }

                    Ingreso ingreso = new Ingreso();
                    ingreso.EdificioId     = ViewModel.EdificioId;
                    ingreso.UnidadTiempoId = ViewModel.UnidadTiempoId;
                    ingreso.FechaRegistro  = DateTime.Now;
                    ingreso.Estado         = ConstantHelpers.EstadoActivo;

                    context.Ingreso.Add(ingreso);
                    context.SaveChanges();

                    //Copia de los ingresos de la unidad de tiempo antigua del mismo edificio

                    Ingreso tempIngreso = context.Ingreso.FirstOrDefault(x => x.EdificioId == ingreso.EdificioId && (x.UnidadTiempoId != ingreso.UnidadTiempoId && x.UnidadTiempo.Estado.Equals(ConstantHelpers.EstadoActivo)));
                    if (tempIngreso != null)
                    {
                        //List<DetalleIngreso> LstDetalleIngreso =
                        context.DetalleIngreso.Where(x => x.IngresoId == tempIngreso.IngresoId).ToList().ForEach(x =>
                        {
                            x.IngresoId = ingreso.IngresoId;
                            context.DetalleIngreso.Add(x);
                        }
                                                                                                                 );
                    }
                }
                context.SaveChanges();
                PostMessage(MessageType.Success);
            }
            catch { PostMessage(MessageType.Error); }
            return(RedirectToAction("LstIngresoAdmin", new { EdificioId = ViewModel.EdificioId }));
        }