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; } }
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(); }