using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Internal; using ProRestaurant.Classes; using ProRestaurant.Containers; using ProRestaurant.DBContexts; using ProRestaurant.Models.Accounts; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text.RegularExpressions; namespace ProRestaurant.Repository.Accounts { public class UserRepository : IUserRepository { private readonly DBContext dBContext; public UserRepository(DBContext _DB) { dBContext = _DB; } public User GetUser(Func where) { var user = dBContext.Users.Where(where).FirstOrDefault(); if (user == null) { user = new User { EmailAddress = "", Password = "", FirstName = "", Surname = "", Cellphone = "" }; } return user; } public IEnumerable GetUsers() { return dBContext.Users.ToList(); } public void Insert(User user) { dBContext.Add(user); Save(); } public UserContainer Login(string UserName, string Password) { UserContainer returnObject = new UserContainer(); User user; string pattern = @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z"; if (Regex.IsMatch(UserName, pattern)) user = dBContext.Users.Where(u => u.EmailAddress == UserName).FirstOrDefault(); else user = dBContext.Users.Where(u => u.Cellphone == UserName).FirstOrDefault(); if (user != null) { if (user.Password == Password) { returnObject.user = user; returnObject.ResultString = "Access Granted"; } else returnObject.ResultString = "Password incorrect"; } else { returnObject.ResultString = "User not found"; } return returnObject; } public void Remove(User user) { dBContext.Users.Remove(user); Save(); } public void Save() { dBContext.SaveChanges(); } public void Update(User user) { dBContext.Entry(user).State = EntityState.Modified; Save(); } } }