Ejemplo n.º 1
0
        public async Task <ActionResult> Crear(SolicitudViewModel solicitudVacaciones)
        {
            var solicitante = userService.ObtenerUsuarioPorId(solicitudVacaciones.Id);

            if (!ModelState.IsValid)
            {
                return(View(solicitudVacaciones));
            }

            if (solicitudVacaciones.CantidadDiasSolicitados > solicitudVacaciones.SaldoDiasDisponibles)
            {
                ModelState.AddModelError("", "La cantidad de días solicitados no puede ser mayor al saldo de días disponibles.");
                return(View(solicitudVacaciones));
            }

            try
            {
                var guid         = Guid.NewGuid();
                var rowsAffected = await solicitudService.CrearSolicitudVacaciones(solicitudVacaciones, guid);

                if (rowsAffected <= 0)
                {
                    ModelState.AddModelError("", "Hubo un problema al tratar de agregar la solicitud. Favor intente de nuevo más tarde.");
                    return(View(solicitudVacaciones));
                }

                var role = roleService.ObtenerRolPorNombre("Director");
                if (role.Id == solicitante.Role.Id)
                {
                    solicitudVacaciones.SolicitudId = guid;
                    await EnviarCorreo(solicitudVacaciones, solicitante);
                }

                return(RedirectToAction("Index", "Solicitud"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Hubo un problema al tratar de agregar la solicitud. Favor intente de nuevo más tarde.");
                return(View(solicitudVacaciones));
            }
        }