public PropuestaViewModel VerPropuestaYDonaciones(int id)
        {
            try
            {
                Propuestas         propuesta      = context.Propuestas.Where(p => p.IdPropuesta == id).Single();
                Usuarios           usuarioCreador = UserService.TraerPerfilDelUsuario(propuesta.IdUsuarioCreador);
                PropuestaViewModel pvm            = new PropuestaViewModel
                {
                    Propuesta      = propuesta,
                    UsuarioCreador = usuarioCreador,
                };

                var porcentajeRealizacion = 0;

                switch (propuesta.TipoDonacion)
                {
                case (int)TipoPropuestaEnum.HorasTrabajo:
                    pvm.DonacionesHorasTrabajo = propuesta.PropuestasDonacionesHorasTrabajo.FirstOrDefault().DonacionesHorasTrabajo.ToList();

                    porcentajeRealizacion     = (int)(pvm.DonacionesHorasTrabajo.Sum(x => x.Cantidad) * 100) / propuesta.PropuestasDonacionesHorasTrabajo.FirstOrDefault().CantidadHoras;
                    pvm.PorcentajeRealizacion = porcentajeRealizacion > 100 ? 100 : (int)porcentajeRealizacion;

                    return(pvm);

                case (int)TipoPropuestaEnum.Insumos:
                    List <int> porcentajes = new List <int>();

                    foreach (var p in propuesta.PropuestasDonacionesInsumos)
                    {
                        var realizacion = (p.DonacionesInsumos.Sum(x => x.Cantidad) * 100) / p.Cantidad;
                        porcentajes.Add(realizacion > 100 ? 100 : realizacion);
                    }

                    porcentajeRealizacion     = porcentajes.Sum() / porcentajes.Count();
                    pvm.PorcentajeRealizacion = porcentajeRealizacion > 100 ? 100 : (int)porcentajeRealizacion;

                    return(pvm);

                case (int)TipoPropuestaEnum.Monetaria:
                    pvm.DonacionesMonetarias  = propuesta.PropuestasDonacionesMonetarias.FirstOrDefault().DonacionesMonetarias.ToList();
                    porcentajeRealizacion     = (int)((pvm.DonacionesMonetarias.Sum(x => x.Dinero) * 100) / propuesta.PropuestasDonacionesMonetarias.FirstOrDefault().Dinero);
                    pvm.PorcentajeRealizacion = porcentajeRealizacion > 100 ? 100 : (int)porcentajeRealizacion;

                    return(pvm);
                }

                return(null);
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#2
0
 public ActionResult ModificarPropuesta(PropuestaViewModel pvm)
 {
     if (ModelState.IsValid)
     {
         if (pvm.Propuesta.Foto != null)
         {
             pvm.Propuesta.Foto = GetPathForPhoto(pvm.Propuesta.Foto + pvm.Propuesta.Nombre);
         }
         ProposalService.ModificarPropuestaBase(pvm);
         return(Redirect("/Propuestas/VerDetalles/" + pvm.Propuesta.IdPropuesta));
     }
     return(View(pvm));
 }
        public void ModificarPropuestaBase(PropuestaViewModel pvm)
        {
            Propuestas p = context.Propuestas.Find(pvm.Propuesta.IdPropuesta);

            p.Nombre           = pvm.Propuesta.Nombre;
            p.Descripcion      = pvm.Propuesta.Descripcion;
            p.FechaFin         = pvm.Propuesta.FechaFin;
            p.TelefonoContacto = pvm.Propuesta.TelefonoContacto;
            p.Foto             = pvm.Propuesta.Foto;
            context.SaveChanges();
            switch (pvm.Propuesta.TipoDonacion)
            {
            case (int)TipoPropuestaEnum.HorasTrabajo:
                ModificarPropuestaHorasTrabajo(p.PropuestasDonacionesHorasTrabajo.FirstOrDefault(), pvm);
                break;

            //case (int)TipoPropuestaEnum.Insumos:
            //    break;
            case (int)TipoPropuestaEnum.Monetaria:
                ModificarPropuestaMonetaria(p.PropuestasDonacionesMonetarias.FirstOrDefault(), pvm);
                break;
            }
        }
        private void ModificarPropuestaMonetaria(PropuestasDonacionesMonetarias propuesta, PropuestaViewModel pvm)
        {
            PropuestasDonacionesMonetarias propuestaModificada = context.PropuestasDonacionesMonetarias
                                                                 .Find(propuesta.IdPropuestaDonacionMonetaria);

            propuestaModificada.Dinero = pvm.PropuestasDonacionesMonetarias.Dinero;
            context.SaveChanges();
        }
        private void ModificarPropuestaHorasTrabajo(PropuestasDonacionesHorasTrabajo propuesta, PropuestaViewModel pvm)
        {
            PropuestasDonacionesHorasTrabajo propuestaModificada = context.PropuestasDonacionesHorasTrabajo
                                                                   .Find(propuesta.IdPropuestaDonacionHorasTrabajo);

            if (pvm.PropuestaDonacionesHorasTrabajo.CantidadHoras == 0)
            {
                propuestaModificada.CantidadHoras = propuesta.CantidadHoras;
            }
            else
            {
                propuestaModificada.CantidadHoras = pvm.PropuestaDonacionesHorasTrabajo.CantidadHoras;
            }
            propuestaModificada.Profesion = pvm.PropuestaDonacionesHorasTrabajo.Profesion;
            context.SaveChanges();
        }