public async Task <IActionResult> CreateAsync(ConfirmationLoanViewModel model) { if (!ModelState.IsValid) { if (model.ExpiryTimestamp <= model.FromTimestamp) { ModelState.AddModelError("Error", "Schedule From field must be less than Schedule To"); return(View("CreateLoan", model)); } IList <LoanResponse> _Loans = (await __LoanManager.GetAsync()).Where(loan => loan.Status != Enums.Loan.Status.Complete && loan.Status != Enums.Loan.Status.EarlyComplete).ToList(); List <Guid> _ExcludeEquipment = new List <Guid>(); foreach (LoanResponse loan in _Loans) { IList <LoanEquipmentResponse> _LoanEquipment = await __LoanEquipmentManager.GetAsync(loan.UID); _ExcludeEquipment.AddRange(_LoanEquipment.Select(x => x.EquipmentUID)); } _ExcludeEquipment = _ExcludeEquipment.Distinct().ToList(); CreateLoanViewModel _CreateLoanViewModel = new CreateLoanViewModel { EquipmentSelectList = __Mapper.Map <IList <Equipment.Models.EquipmentViewModel> >((await __EquipmentManager.GetAsync()).Where(x => x.Status == NsEquipmentEnum.Status.Available && !_ExcludeEquipment.Contains(x.UID))), UserSelectList = await __UserRepository.GetAsync(), Blacklists = __Mapper.Map <IList <Admin.Models.Blacklist.BlacklistViewModel> >(await __BlacklistManager.GetAsync()) }; ModelState.AddModelError("Error", "Unable to create Loan"); return(View("CreateLoan", _CreateLoanViewModel)); } model.LoanerEmail = __UserManager.GetUserAsync(HttpContext.User).Result.Email; LoanResponse _Response = await __LoanManager.CreateAsync(__Mapper.Map <CreateLoanRequest>(model)); if (!_Response.Success) { ModelState.AddModelError("Error", _Response.Message); return(View("CreateLoan", model)); } LoanResponse _LoanResponse = await __LoanManager.GetByUIDAsync(_Response.UID); await __EmailScheduleManager.CreateLoanConfirmScheduleAsync(_LoanResponse, $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}", true); return(RedirectToAction("Index", "Loan", new { Area = "Loan", successMessage = $"{GlobalConstants.SUCCESS_ACTION_PREFIX} created {ENTITY_NAME}." })); }
public async Task <IActionResult> ConfirmViewAsync(CreateLoanViewModel model) { if (model.ExpiryTimestamp <= model.FromTimestamp) { ModelState.AddModelError("Error", "Schedule From field must be less than Schedule To"); return(View("CreateLoan", model)); } if (!ModelState.IsValid) { IList <LoanResponse> _Loans = (await __LoanManager.GetAsync()).Where(loan => loan.Status != Enums.Loan.Status.Complete && loan.Status != Enums.Loan.Status.EarlyComplete).ToList(); List <Guid> _ExcludeEquipment = new List <Guid>(); foreach (LoanResponse loan in _Loans) { IList <LoanEquipmentResponse> _Response = await __LoanEquipmentManager.GetAsync(loan.UID); _ExcludeEquipment.AddRange(_Response.Select(x => x.EquipmentUID)); } _ExcludeEquipment = _ExcludeEquipment.Distinct().ToList(); model.EquipmentSelectList = __Mapper.Map <IList <Equipment.Models.EquipmentViewModel> >((await __EquipmentManager.GetAsync()).Where(x => x.Status == NsEquipmentEnum.Status.Available && !_ExcludeEquipment.Contains(x.UID))); model.UserSelectList = await __UserRepository.GetAsync(); model.Blacklists = __Mapper.Map <IList <Admin.Models.Blacklist.BlacklistViewModel> >(await __BlacklistManager.GetAsync()); return(View("CreateLoan", model)); } ConfirmationLoanViewModel _Model = new ConfirmationLoanViewModel { ExpiryTimestamp = model.ExpiryTimestamp, FromTimestamp = model.FromTimestamp, LoaneeEmail = model.LoaneeEmailAddress, SelectedEquipmentList = __Mapper.Map <IList <Equipment.Models.EquipmentViewModel> >((await __EquipmentManager.GetAsync(model.SelectedEquipment)).Equipments), LoanerEmail = __UserManager.GetUserAsync(HttpContext.User).Result.Email, BlacklistState = await __BlacklistManager.GetState(model.LoaneeEmailAddress) }; return(View("ConfirmationLoan", _Model)); }