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