예제 #1
0
 public IActionResult Answer(VacationsRequest vacationsRequest)
 {
     if (vacationsRequest.IsApproved == null)
     {
         ModelState.AddModelError("notAnswered", "No ha respondido aún a la solicitud");
     }
     if (!ModelState.IsValid)
     {
         var attorney = _attorneysRepo.Attorneys.Where(a => a.Id == vacationsRequest.AttorneyId).FirstOrDefault();
         NewVacationsRequestViewModel viewModel = new NewVacationsRequestViewModel()
         {
             VacationsRequest = vacationsRequest,
             AttorneyName     = attorney.Name
         };
         return(View(viewModel));
     }
     else
     {
         int    currentUserId = Convert.ToInt32(HttpContext.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value);
         string message;
         _vacationsRequestRepo.Approve(vacationsRequest, currentUserId, out message);
         TempData["answered"] = true;
         TempData["message"]  = message;
         return(RedirectToAction("Admin"));
     }
 }
예제 #2
0
        public IActionResult New(VacationsRequest vacationsRequest)
        {
            if (!ModelState.IsValid)
            {
                var user     = HttpContext.User;
                var id       = user.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value;
                var attorney = _attorneysRepo.Attorneys.Where(x => x.UserId == Convert.ToInt32(id)).FirstOrDefault();
                NewVacationsRequestViewModel viewModel = new NewVacationsRequestViewModel
                {
                    DaysAvailable    = attorney.VacationCount,
                    VacationsRequest = vacationsRequest
                };
                return(View(viewModel));
            }
            else
            {
                var user   = HttpContext.User;
                var userId = Convert.ToInt32(user.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value);

                if (_vacationsRequestRepo.ValidateRequest(userId, vacationsRequest.Quantity))
                {
                    //vacationsRequest.AttorneyId = attorney.AttorneyId;
                    _vacationsRequestRepo.Save(vacationsRequest, userId);
                    ViewBag.DaysInvalid = false;
                    TempData["added"]   = true;
                    return(RedirectToAction("New"));
                }
                else
                {
                    //Refactorizar acá para agregar manualmente el error al model view state
                    ViewBag.DaysInvalid = true;
                    NewVacationsRequestViewModel viewModel = new NewVacationsRequestViewModel
                    {
                        DaysAvailable    = _vacationsRequestRepo.GetAvailableVacationCount(userId),
                        VacationsRequest = vacationsRequest
                    };
                    return(View(viewModel));
                }
            }
        }