using Microsoft.EntityFrameworkCore; using ProRestaurant.Classes; using ProRestaurant.DBContexts; using ProRestaurant.Models.Accounts; using ProRestaurant.Models.Restaurants; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography.Xml; namespace ProRestaurant.Repository.Restaurants { public interface IRestaurantUserRepository { List GetUsers(int RestaurantId); RestaurantUser GetRestaurantUser(int UserId); void InsertUser(RestaurantUser User); void UpdateUser(RestaurantUser User); void RemoveUser(int id); void Save(); } public class RestaurantUserRepository : IRestaurantUserRepository { private readonly DBContext dBContext; public RestaurantUserRepository(DBContext db) { dBContext = db; } public RestaurantUser GetRestaurantUser(int UserId) { var restUser = dBContext.RestaurantUsers.Include("User").Where(r => r.UserId == UserId).FirstOrDefault(); if (restUser == null) { restUser = new RestaurantUser { User = new User() { Id = 0, EmailAddress = "", FirstName = "", Surname = "", Cellphone = "" } }; } return restUser; } public List GetUsers(int RestaurantId) { var users = dBContext.RestaurantUsers.Include("User").Where(r => r.RestaurantId == RestaurantId).Select(r => r.User).ToList(); return users; } public void InsertUser(RestaurantUser User) { dBContext.Add(User); string password = CommonFunctions.GenerateRandomPassword(); User.User.Password = CommonFunctions.GetHashSHA256(password + "≡∆≤≥√∞ProVision"); User.User.ChangePassword = true; User.User.SystemRole = SystemRole.RestaurantUser; //TODO: Email generated password to the email address Save(); } public void RemoveUser(int id) { var user = dBContext.Users.Where(u => u.Id == id).FirstOrDefault(); var rUser = dBContext.RestaurantUsers.Where(r => r.UserId == user.Id).FirstOrDefault(); dBContext.Users.Remove(user); dBContext.RestaurantUsers.Remove(rUser); Save(); } public void Save() { dBContext.SaveChanges(); } public void UpdateUser(RestaurantUser User) { dBContext.Entry(User.User).State = EntityState.Modified; Save(); } } }