// GET: Solicitudes/Create public IActionResult Create(SelectedProyectosForSolicitudViewModel selectedProyectos) { Proyecto proyecto; int id; SolicitudesCreateViewModel solicitud = new SolicitudesCreateViewModel(); solicitud.Solicitudes = new List <SolicitudCreateViewModel>(); Trabajador trabajador = _context.Users.OfType <Trabajador>().FirstOrDefault <Trabajador>(u => u.UserName.Equals(User.Identity.Name)); if (selectedProyectos.IdsToAdd == null) { ModelState.AddModelError("ProyectoNoSeleccionado", "Por favor, selecciona un proyecto para poder crear la solicitud"); } else if (selectedProyectos.IdsToAdd.Length == 0) { ModelState.AddModelError("ProyectoNoSeleccionado", "Por favor, selecciona un proyecto para poder crear la solicitud"); } else { foreach (string ids in selectedProyectos.IdsToAdd) { id = int.Parse(ids); proyecto = _context.Proyecto.Include(m => m.Rating).Where(m => m.RatingId == null).FirstOrDefault <Proyecto>(p => p.ProyectoId.Equals(id)); solicitud.Solicitudes.Add(new SolicitudCreateViewModel() { FechaSolicitud = DateTime.Now, solicitud = new Solicitud() { Proyecto = proyecto, Trabajador = trabajador } }); } } solicitud.SecondSurname = trabajador.Apellido2; solicitud.FirstSurname = trabajador.Apellido1; solicitud.Name = trabajador.Nombre; ViewBag.Estados = new SelectList(Enum.GetNames(typeof(StartGrow.Models.Estados))); ViewBag.Rating = new SelectList(_context.Rating.Select(c => c.Nombre).Distinct()); ViewBag.Trabajador = trabajador; return(View(solicitud)); }
public async Task <IActionResult> Create(SolicitudesCreateViewModel solicitudCreate) { var solicitudes = new List <SolicitudCreateViewModel>(); Trabajador trabajador; Proyecto proyecto; trabajador = _context.Users.OfType <Trabajador>().FirstOrDefault <Trabajador>(u => u.UserName.Equals(User.Identity.Name)); // List<int> idsSolicitud = new List<int>(); int[] idsSolicitud; ModelState.Clear(); foreach (SolicitudCreateViewModel solicitudCV in solicitudCreate.Solicitudes) { proyecto = await _context.Proyecto.FirstOrDefaultAsync <Proyecto>(m => m.ProyectoId == solicitudCV.solicitud.Proyecto.ProyectoId); Boolean aceptada = solicitudCV.estados == Estados.Aceptada; if ((solicitudCV.estados == Estados.Aceptada && solicitudCV.rating.Equals("F")) || (solicitudCV.estados == Estados.Rechazada && !solicitudCV.rating.Equals("F"))) { ModelState.AddModelError("SolicitudIncorrecta", $"La solicitud de {solicitudCV.solicitud.Proyecto.Nombre}, no puede estar aprobada y tener una calificacion de F o viceversa"); } else { if (solicitudCV.estados == Estados.Aceptada && (solicitudCV.interes <= 0 || solicitudCV.interes == null || solicitudCV.plazo <= 0 || solicitudCV.plazo == null)) { ModelState.AddModelError("NoInteresPlazo", $"No se ha introducido correctamente el plazo o el interes del proyecto {solicitudCV.solicitud.Proyecto.Nombre}"); } else { if (aceptada) { proyecto.Interes = (float)solicitudCV.interes * (float)0.1; proyecto.Plazo = solicitudCV.plazo; } proyecto.Rating = _context.Rating.Where(r => r.Nombre.Equals(solicitudCV.rating)).FirstOrDefault(); solicitudCV.solicitud.Estado = solicitudCV.estados; solicitudCV.solicitud.Trabajador = trabajador; solicitudCV.solicitud.FechaSolicitud = DateTime.Now; _context.Add(solicitudCV.solicitud); } } } if (ModelState.ErrorCount > 0) { solicitudCreate.Name = trabajador.Nombre; solicitudCreate.FirstSurname = trabajador.Apellido1; solicitudCreate.SecondSurname = trabajador.Apellido2; ViewBag.Estados = new SelectList(Enum.GetNames(typeof(StartGrow.Models.Estados))); ViewBag.Rating = new SelectList(_context.Rating.Select(c => c.Nombre).Distinct()); return(View(solicitudCreate)); } await _context.SaveChangesAsync(); idsSolicitud = new int[solicitudCreate.Solicitudes.Count]; //foreach(SolicitudCreateViewModel solicitudCV in solicitudCreate.Solicitudes ) //{ // idsSolicitud.Add(solicitudCV.solicitud.SolicitudId); //} for (int i = 0; i < idsSolicitud.Length; i++) { idsSolicitud[i] = solicitudCreate.Solicitudes[i].solicitud.SolicitudId; } //TempData["idsSolicitud"] = idsSolicitud; DetailsViewModel detailsViewModel = new DetailsViewModel(); detailsViewModel.ids = idsSolicitud; return(RedirectToAction("Details", detailsViewModel)); //new { id = idsSolicitud }); }