using ProRestaurant.DBContexts; using ProRestaurant.Models.Accounts; using System; using System.Collections.Generic; using System.Linq; namespace ProRestaurant.Repository.Accounts { public interface IUserRepository { ICollection Get(Func where); User GetUser(int UserId); UserAddress GetUserAddress(int UserId); void Update(User user); void Save(); } public class UserRepository : IUserRepository { private readonly DBContext dbContext; public UserRepository(DBContext _db) { dbContext = _db; } public ICollection Get(Func where) { return dbContext.Users.Where(where).ToList(); } public User GetUser(int UserId) { return dbContext.Users.Where(u => u.Id == UserId).FirstOrDefault(); } public UserAddress GetUserAddress(int UserId) { var address = dbContext.UserAddresses.Where(a => a.UserId == UserId).FirstOrDefault(); return address; } public void Save() { dbContext.SaveChanges(); } public void Update(User user) { if (user.Addresses != null && user.Addresses.Count > 0) { foreach(var address in user.Addresses) { if (address.Id == 0) { dbContext.Add(address); Save(); } } } dbContext.Entry(user).State = Microsoft.EntityFrameworkCore.EntityState.Modified; Save(); } } }