Exemple #1
0
        //[ValidateAntiForgeryToken]
        public async Task <IActionResult> Create(ApplicantViewModel model, CancellationToken cancellationToken)
        {
            var user = userManager.GetUserAsync(User);

            if (user.Result.IsFirstLogin)
            {
                return(View("~/Views/Home/ChangePassword.cshtml"));
            }

            var applicant = await this.applicantService.AddAsync(model.ToServiceModel(), cancellationToken);

            //return CreatedAtAction(nameof(GetByIdAsync), new { id = loanApplication.Id }, loanApplication.ToViewModel());
            //model.Id = applicant.Id;

            var userId = this.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            var name = HttpContext.User.Identity.Name;

            // TODO service get user by email/username

            var loanViewModel = new LoanApplicationViewModel {
                ApplicantId = applicant.Id, OpenedById = userId, EmailId = model.EmailId
            };

            return(PartialView("_CreateLoanPartial", loanViewModel));
        }
Exemple #2
0
        public ActionResult DiplayApplicationWithStatus()//has a view
        {
            var L1 = db.loan_application;
            var L2 = db.loan_app_or_rej;
            var Q  = (from la in L1
                      join ls in L2 on la.application_id equals ls.application_id
                      where ls.status == "approved" || ls.status == "rejected" orderby ls.date_of_approval descending
                      select new
            {
                ApplicantID = la.application_id,
                Name = la.name,
                LoanAmount = la.loan_amount,
                MonthlyIncome = la.monthly_income,
                Status = ls.status,
                DateOfApproval = ls.date_of_approval
            }).ToList();
            List <LoanApplicationViewModel> listViewModel = new List <LoanApplicationViewModel>();

            foreach (var item in Q)
            {
                LoanApplicationViewModel viewmodel = new LoanApplicationViewModel();
                viewmodel.ApplicationId  = item.ApplicantID;
                viewmodel.Name           = item.Name;
                viewmodel.LoanAmount     = item.LoanAmount;
                viewmodel.MonthlyIncome  = item.MonthlyIncome;
                viewmodel.DateOfApproval = item.DateOfApproval;
                viewmodel.Status         = item.Status;
                listViewModel.Add(viewmodel);
            }

            return(View(listViewModel));
        }
Exemple #3
0
        public async Task <IActionResult> Edit(/*Guid id, */ ApplicantViewModel model, CancellationToken cancellationToken)
        {
            var user = userManager.GetUserAsync(User);

            if (user.Result.IsFirstLogin)
            {
                return(View("~/Views/Home/ChangePassword.cshtml"));
            }
            //model.Id = id;
            var applicant = await this.applicantService.UpdateAsync(model.ToServiceModel(), cancellationToken);

            //if (applicant is null)
            //{
            //    return NotFound();
            //}

            //return View("", loanApplication.ToViewModel());

            var name = HttpContext.User.Identity.Name;

            // get logged user id
            var userId = this.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;


            var loanViewModel = new LoanApplicationViewModel {
                ApplicantId = applicant.Id, OpenedById = userId, EmailId = model.EmailId
            };

            return(PartialView("_CreateLoanPartial", loanViewModel));
        }
        public ActionResult LoanApplication(LoanApplicationViewModel model, string btnPrevious, string btnNext)
        {
            const string requiredFieldMessage = "Obligatoriskt fält";

            try
            {
                model.Occupations     = Occupations;
                model.MaritalStatuses = MaritalStatuses;

                if (ModelState.IsValid)
                {
                    if (!string.IsNullOrEmpty(btnNext))
                    {
                        var isValidInput = true;

                        if (!IsMaritalStatusValid(model.MaritalStatus))
                        {
                            model.MaritalStatusValidationMsg = requiredFieldMessage;
                            isValidInput = false;
                        }

                        if (!IsValidOccupation(model.Occupation))
                        {
                            model.OccupationValidationMsg = requiredFieldMessage;
                            isValidInput = false;
                        }

                        if (!IsYearOfBirthValid(model.YearOfBirthString, out int year))
                        {
                            model.YearOfBirthValidationMsg = "Ogiltigt värde";
                            isValidInput = false;
                        }

                        if (isValidInput)
                        {
                            model.YearOfBirth = year;
                            SetTempData(model);
                            return(RedirectToAction(nameof(Summary)));
                        }
                    }
                    else if (!string.IsNullOrEmpty(btnPrevious))
                    {
                        if (IsYearOfBirthValid(model.YearOfBirthString, out int year))
                        {
                            model.YearOfBirth = year;
                        }
                        SetTempData(model);
                        return(RedirectToAction(nameof(ContactInfo)));
                    }
                }
                return(View(model));
            }
            catch
            {
                return(View(model));
            }
        }
        public IActionResult Index(LoanApplicationViewModel model)
        {
            using (var dbContext = _dbFactory())
            {
                var application = new LoanApplication(model.Name, model.From, model.Amount, model.Description);
                dbContext.LoanApplications.Add(application);
                dbContext.SaveChanges();
            }

            return(Redirect("/LoanApplications"));
        }
        public async Task <IActionResult> UpdateAsync(Guid id, LoanApplicationViewModel model, CancellationToken cancellationToken)
        {
            model.Id = id;
            var loanApplication = await this.loanApplicationService.UpdateAsync(model.ToServiceModel(), cancellationToken);

            if (loanApplication is null)
            {
                return(NotFound());
            }

            //return View("", loanApplication.ToViewModel());

            return(RedirectToAction("Index"));
        }
Exemple #7
0
 public LoanApplicationDTO MapFrom(LoanApplicationViewModel entity)
 {
     return(new LoanApplicationDTO()
     {
         Id = entity.Id,
         FirstName = entity.FirstName,
         LastName = entity.LastName,
         EGN = entity.EGN,
         Status = entity.Status,
         CardId = entity.CardId,
         PhoneNumber = entity.PhoneNumber,
         EmailId = entity.EmailId,
     });
 }
        public async Task <IActionResult> Create(LoanApplicationViewModel model, CancellationToken cancellationToken)
        {
            //var currentOperatorId = this.User.FindFirst(u => u.Type == ClaimTypes.NameIdentifier);
            var currentUserId = this.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            model.OpenedById = currentUserId;
            //model.OpenedById = currentOperatorId;
            var loanApplication = await this.loanApplicationService.AddAsync(model.ToServiceModel(), cancellationToken);

            await this.emailService.ChangeToOpenAsync(model.EmailId, cancellationToken);

            //return CreatedAtAction(nameof(GetByIdAsync), new { id = loanApplication.Id }, loanApplication.ToViewModel());

            return(Redirect("/Email/Index"));
        }
 public static LoanApplication ToServiceModel(this LoanApplicationViewModel viewModel)
 {
     return(viewModel != null ? new LoanApplication
     {
         Id = viewModel.Id,
         LoanAmount = viewModel.LoanAmount,
         ApplicantId = viewModel.ApplicantId,
         ApplicationStatusId = viewModel.ApplicationStatusId,
         ClosedBy = viewModel.ClosedBy,
         OpenedBy = viewModel.OpenedBy,
         ClosedById = viewModel.ClosedById,
         OpenedById = viewModel.OpenedById,
         EmailId = viewModel.EmailId
     } : null);
 }
        public async Task <IActionResult> ApproveApplication(LoanApplicationViewModel loanViewModel, CancellationToken cancellationToken)
        {
            try
            {
                await this.emailService.ChangeToCloseAsync(loanViewModel.Id, cancellationToken);

                await this.loanApplicationService.ApproveAsync(loanViewModel.ToServiceModel(), cancellationToken);
            }
            catch (Exception)
            {
                //return NoContent();
            }

            return(RedirectToAction(nameof(Index)));
        }
Exemple #11
0
        public static LoanApplicationViewModel ToVM(this LoanApplicationDTO dataDTO)
        {
            var dataModel = new LoanApplicationViewModel
            {
                Id        = dataDTO.Id,
                FirstName = dataDTO.ClientFristName,
                LastName  = dataDTO.ClientLastName,
                EGN       = dataDTO.ClientEGN,
                Phone     = dataDTO.ClientPhone,
                Amount    = dataDTO.LoanAmount,
                EmailId   = dataDTO.EmailId,
                Status    = dataDTO.ApplicationStatusName,
            };

            return(dataModel);
        }
Exemple #12
0
        public async Task <IActionResult> ApplicationForm(LoanApplicationViewModel loanModel)
        {
            if (!ModelState.IsValid ||
                loanModel.FirstName == null ||
                loanModel.LastName == null ||
                loanModel.EGN == null ||
                loanModel.Phone == null)
            {
                this.toast.AddWarningToastMessage("Not valid data.");
                return(RedirectToAction("Application", "Email", new { id = loanModel.EmailId }));
            }

            try
            {
                var operatorId = userManager.GetUserId(User);

                var clientData = await this.clientService.FindClientAsync(loanModel.FirstName, loanModel.LastName, loanModel.EGN);

                if (clientData is null)
                {
                    var clientDataDTO = this.clientDataDTOFactory.Create(loanModel.FirstName, loanModel.LastName, loanModel.EGN, loanModel.Phone, operatorId);
                    clientData = await this.clientService.CreateClientData(clientDataDTO);

                    Log.Information($"{DateTime.Now} Client Data has been created by {operatorId}.");
                }

                var loanApplicationDTO = await this.loanApplicationService.CreateLoanApplicationAsync(clientData.Id, loanModel.EmailId, loanModel.Status, operatorId, loanModel.Amount);

                this.toast.AddSuccessToastMessage($"Loan Application has been created successfully!");
                Log.Information($"{DateTime.Now} Loan Application has been created by {operatorId}.");

                var emailStatus = await this.emailStatusService.GetEmailStatusByNameAsync("Closed Application");

                await this.emailService.UpdateEmailStatus(new EmailDTO { Id = loanModel.EmailId }, emailStatus, operatorId);

                return(RedirectToAction("Application", "Email", new { id = loanModel.EmailId }));
            }
            catch (Exception ex)
            {
                this.toast.AddWarningToastMessage("Oops... Something went wrong. Please, call your system administrator.");
                Log.Error($"{DateTime.Now} {ex.Message}");
            }

            return(RedirectToAction("Application", "Email", new { id = loanModel.EmailId }));
        }
        public async Task <LoanApplicationViewModel> GetById(LoanApplicationId applicationId)
        {
            var domainEvents = await _eventStore.GetEventsByStreamId(new LoanApplicationEventStreamId(applicationId));

            if (domainEvents.Count == 0)
            {
                return(null);
            }

            var model = new LoanApplicationViewModel(applicationId);

            foreach (var domainEvent in domainEvents.Cast <LoanApplicationDomainEvent>())
            {
                _projection.Apply(model, domainEvent);
            }

            return(model);
        }
Exemple #14
0
        public void Apply(LoanApplicationViewModel model, LoanApplicationDomainEvent domainEvent)
        {
            switch (domainEvent)
            {
            case LoanApplicationRegistered applicationRegistered:
                model.RequestedAmount    = applicationRegistered.RequestedAmount;
                model.OrganisationNumber = applicationRegistered.OrganisationNumber;
                model.Status             = LoanApplicationStatus.Registered;
                break;

            case ApplicationApproved _:
                model.Status = LoanApplicationStatus.Approved;
                break;

            case ApplicationDenied _:
                model.Status = LoanApplicationStatus.Denied;
                break;
            }
        }
Exemple #15
0
        public static IReadOnlyCollection <LoanApplicationViewModel> ToViewModel(this IReadOnlyCollection <LoanApplication> entities)
        {
            if (entities.Count == 0)
            {
                return(Array.Empty <LoanApplicationViewModel>());
            }

            var loanApplications = new LoanApplicationViewModel[entities.Count];

            var index = 0;

            foreach (var entity in entities)
            {
                loanApplications[index] = entity.ToViewModel();
                ++index;
            }

            return(new ReadOnlyCollection <LoanApplicationViewModel>(loanApplications));
        }
Exemple #16
0
        //[ValidateAntiForgeryToken]
        public async Task <string> CreateAsync(LoanApplicationViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                throw new ArgumentException("Invalid application VM!");
            }
            //logger logsmth

            var isRealEgn = await checkEgnService.IsRealAsync(vm.EGN);

            if (!isRealEgn)
            {
                return("false egn");
            }
            var isRealPhoneNumber = await checkPhoneNumberService.IsRealAsync(vm.PhoneNumber);

            if (!isRealPhoneNumber)
            {
                return("false phonenumber");
            }
            var isRealCardId = await checkCardIdService.IsRealAsync(vm.CardId);

            if (!isRealCardId)
            {
                return("false cardId");
            }
            vm.CardId   = encryptService.EncryptString(vm.CardId);
            vm.LastName = encryptService.EncryptString(vm.LastName);
            vm.EGN      = encryptService.EncryptString(vm.EGN);
            var application = this.applicationViewModelMapper.MapFrom(vm);

            await this.applicationService.CreateAsync(application);


            //Redirect to smth
            return("true");
        }
 private static bool HasPageReloaded(LoanApplicationViewModel model)
 {
     return(string.IsNullOrEmpty(model.FirstName) || string.IsNullOrEmpty(model.LastName) || string.IsNullOrEmpty(model.Email));
 }