Ejemplo n.º 1
0
        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}." }));
        }
Ejemplo n.º 2
0
        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));
        }