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(); }
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); }
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"); } } }