Ejemplo n.º 1
0
        public async Task <IActionResult> CreateAvioAdmin([FromBody] RegisterAdminDTO adminDTO)
        {
            if (ModelState.IsValid)
            {
                if (await AvioAdminService.AdminExists(adminDTO.Username))
                {
                    return(BadRequest("Admin already exists with that username."));
                }

                if (await CarAdminService.AdminExists(adminDTO.Username))
                {
                    return(BadRequest("Admin already exists with that username."));
                }

                if (adminDTO.Password != adminDTO.ConfirmPassword)
                {
                    return(BadRequest("Password and confirmation password don't match."));
                }

                RegularUser user = new RegularUser()
                {
                    UserName = adminDTO.Username,
                    Status   = UserStatus.Activated
                };

                var foundAdmin = await UserManager.FindByNameAsync(user.UserName) != null;

                if (!foundAdmin)
                {
                    var createdAdmin = await UserManager.CreateAsync(user, adminDTO.Password);

                    if (createdAdmin.Succeeded)
                    {
                        await UserManager.AddToRoleAsync(user, "AvioAdmin");

                        AvioAdmin admin = new AvioAdmin()
                        {
                            UserId        = user.Id,
                            AvioCompanyId = (await AvioService.GetCompanyByName(adminDTO.CompanyName)).AvioCompanyId
                        };

                        if (admin.AvioCompanyId > 0)
                        {
                            await AvioAdminService.RegisterAdmin(user.Id, admin);

                            return(Ok(200));
                        }
                        else
                        {
                            return(BadRequest("Avio company not found."));
                        }
                    }
                }

                return(BadRequest("Admin already exists."));
            }

            return(BadRequest("No sufficient data provided."));
        }