Ejemplo n.º 1
0
        public async Task <ActionResult> ApproveAccessRequest(int accessRequestId)
        {
            try
            {
                //make request status approved
                var accessRequest = _accessRequestService.GetById(accessRequestId);

                if (accessRequest == null)
                {
                    return(Content("Access Request does not exist"));
                }

                _accessRequestService.AcceptRequest(accessRequestId);

                //create user
                var applicationUser = new ApplicationUser()
                {
                    FirstName   = accessRequest.FirstName,
                    LastName    = accessRequest.LastName,
                    Email       = accessRequest.Email,
                    Gender      = accessRequest.Gender,
                    Birthday    = accessRequest.Birthday,
                    DateCreated = DateTime.UtcNow,
                    PhoneNumber = accessRequest.PhoneNumber,
                    UserName    = accessRequest.Email,
                };

                string password = PasswordHelper.GenerateRandomPassword();
                var    result   = await UserManager.CreateAsync(applicationUser, password);

                //AddRole
                UserManager.AddToRole(applicationUser.Id, accessRequest.AspNetRole.Name);
                var callbackUrl = Url.Action("Login", "Account");
                await UserManager.SendEmailAsync(applicationUser.Id, "Your user request was approved",
                                                 "Login by going to this link <a href=\"http://localhost:2276/account/login \">here </a> with " +
                                                 password + " as a password");

                if (accessRequest.AspNetRole.Name == "Kitched Staff")
                {
                    _queueService.AddWorkforce(new KitchenStaff()
                    {
                        ID = applicationUser.Id, Name = applicationUser.UserName, Capacity = 3, Workload = new Queue <int>()
                    });                                                                                                                                                      /// uh?
                }

                if (accessRequest.AspNetRole.Name == "Delivery Service Staff")
                {
                    deliveryAutomation.AddWorkforce(applicationUser.Id);
                }

                return(RedirectToAction("Index"));
            }
            catch (Exception e)
            {
                CustomLogger.LogError("Cannot approve Access Request", e);
                return(new HttpStatusCodeResult(500));
            }
        }