Esempio n. 1
0
        public async Task GetAccessByHotelStaff(int userId, AccessByWorkerDTO workerDTO)
        {
            var room = context.Rooms.Get(workerDTO.RoomId);

            if (room == null)
            {
                throw new NotFoundException("No such room");
            }

            bool       hasPermission = false;
            HotelStaff staff         = context.HotelStaffs.Get(userId);

            room          = context.Rooms.Get(workerDTO.RoomId);
            hasPermission = room.HotelId == staff.Hotel.Id;

            if (!hasPermission)
            {
                throw new PermissionException();
            }

            var  lastAccess = room.RoomAccesses.Where(r => r.UserId == userId).OrderBy(x => x.DateTime).LastOrDefault();
            bool isOpened   = (lastAccess == null) ? true : !lastAccess.IsOpen;
            var  access     = new RoomAccess()
            {
                DateTime      = DateTime.Now,
                IsOpen        = isOpened,
                RoomId        = workerDTO.RoomId,
                UserId        = userId,
                ReasonOfVisit = workerDTO.Reason
            };

            context.RoomAccesses.Create(access);
            await context.SaveAsync();
        }
Esempio n. 2
0
        public async Task RegisterStaffAsync(RegisterStaffDTO registrationDTO, int userId)
        {
            var hotelAdmin = context.HotelAdmins.Get(userId);

            if (hotelAdmin == null)
            {
                throw new NotFoundException("No such hotel admin");
            }
            int hotelId = hotelAdmin.Hotel.Id;
            ValidationResults result = ModelValidator.IsValid(registrationDTO);

            if (!result.Successed)
            {
                throw ValidationExceptionBuilder.BuildValidationException(result);
            }

            User newUser = new HotelStaff()
            {
                FirstName = registrationDTO.FirstName,
                LastName  = registrationDTO.LastName,
                Email     = registrationDTO.Email,
                UserName  = registrationDTO.Email,
                Category  = registrationDTO.Category
            };

            string password = registrationDTO.Password;

            await CheckIfThePasswordIsValid(password);
            await CheckIfTheUserDoesNotExist(newUser);

            var isCreated = await _userManager.CreateAsync(newUser, password);

            if (!isCreated.Succeeded)
            {
                throw new DBException("Cann't create new user");
            }
            var isAddedToRole = await _userManager.AddToRoleAsync(newUser, "hotel-staff");

            if (!isAddedToRole.Succeeded)
            {
                throw new DBException("Cann't add new user to hotel-staff's role");
            }

            var code = await _userManager.GenerateEmailConfirmationTokenAsync(newUser);

            string message = "Ваш код пiдтвердження: " + code;
            await EmailService.SendEmailAsync(newUser.Email, "HotelLocker пiдтвердження паролю", message);
        }
Esempio n. 3
0
        private static async Task InitializeRolesAsync(UserManager <User> userManager, RoleManager <IdentityRole <int> > roleManager)
        {
            string adminEmail     = "*****@*****.**";
            string adminFirstName = "admin";
            string adminLastName  = "admin";
            string password       = "******";

            if (await roleManager.FindByNameAsync("admin") == null)
            {
                await roleManager.CreateAsync(new IdentityRole <int>("admin"));
            }
            if (await roleManager.FindByNameAsync("user") == null)
            {
                await roleManager.CreateAsync(new IdentityRole <int>("user"));
            }
            if (await roleManager.FindByNameAsync("hotel-admin") == null)
            {
                await roleManager.CreateAsync(new IdentityRole <int>("hotel-admin"));
            }
            if (await roleManager.FindByNameAsync("hotel-staff") == null)
            {
                await roleManager.CreateAsync(new IdentityRole <int>("hotel-staff"));
            }
            if (await userManager.FindByNameAsync(adminEmail) == null)
            {
                User admin = new User {
                    Email          = adminEmail,
                    UserName       = adminEmail,
                    EmailConfirmed = true
                };
                IdentityResult result = await userManager.CreateAsync(admin, password);

                if (result.Succeeded)
                {
                    await userManager.AddToRoleAsync(admin, "admin");
                }
            }
            string userEmail     = "*****@*****.**";
            string userFirstName = "user";
            string userLastName  = "user";

            if (await userManager.FindByNameAsync(userEmail) == null)
            {
                User user = new Guest
                {
                    Email          = userEmail,
                    UserName       = userEmail,
                    FirstName      = userFirstName,
                    LastName       = userLastName,
                    EmailConfirmed = true
                };
                IdentityResult result = await userManager.CreateAsync(user, password);

                if (result.Succeeded)
                {
                    await userManager.AddToRoleAsync(user, "user");
                }
            }
            string hotelEmail     = "*****@*****.**";
            string hotelFirstName = "hotel";
            string hotelLastName  = "hotel";

            if (await userManager.FindByNameAsync(hotelEmail) == null)
            {
                User hotel = new HotelAdmin
                {
                    Email          = hotelEmail,
                    UserName       = hotelEmail,
                    EmailConfirmed = true
                };
                IdentityResult result = await userManager.CreateAsync(hotel, password);

                if (result.Succeeded)
                {
                    await userManager.AddToRoleAsync(hotel, "hotel-admin");
                }
            }
            string staffEmail     = "*****@*****.**";
            string staffFirstName = "staff";
            string staffLastName  = "staff";

            if (await userManager.FindByNameAsync(staffEmail) == null)
            {
                User staff = new HotelStaff
                {
                    Email          = staffEmail,
                    UserName       = staffEmail,
                    FirstName      = staffFirstName,
                    LastName       = staffLastName,
                    EmailConfirmed = true
                };
                IdentityResult result = await userManager.CreateAsync(staff, password);

                if (result.Succeeded)
                {
                    await userManager.AddToRoleAsync(staff, "hotel-staff");
                }
            }
        }