123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- using Microsoft.EntityFrameworkCore;
- using ProRestaurant.DBContexts;
- using ProRestaurant.Models.Accounts;
- using ProRestaurant.Models.Restaurants;
- using System.Collections.Generic;
- using System.Linq;
-
- namespace ProRestaurant.Repository.Restaurants
- {
- public interface IRestaurantRoleRepository
- {
- List<RestaurantRole> GetRoles(int restaurantId);
- RestaurantRole GetRole(int id);
- RestaurantRolePremission GetPremission(int id);
- void Insert(RestaurantRole Role);
- void Update(RestaurantRole Role);
- void Delete(RestaurantRole Role);
- void Save();
- }
-
- public class RestaurantRoleRepository : IRestaurantRoleRepository
- {
- private readonly DBContext dBContext;
-
- public RestaurantRoleRepository(DBContext db)
- {
- dBContext = db;
- }
-
- public void Delete(RestaurantRole Role)
- {
- dBContext.Remove(Role);
- Save();
- }
-
- public RestaurantRolePremission GetPremission(int id)
- {
- var prem = dBContext.RestaurantRolePremissions.Where(p => p.Id == id).FirstOrDefault();
-
- if (prem == null)
- {
- prem = new RestaurantRolePremission();
- }
-
- return prem;
- }
-
- public RestaurantRole GetRole(int id)
- {
- var role = dBContext.RestaurantRoles.Include("Permissions").Where(r => r.Id == id).FirstOrDefault();
-
- if (role == null)
- {
- role = new RestaurantRole
- {
- Permissions = new List<RestaurantRolePremission>(),
- Users = new List<User>()
- };
- }
- else
- {
- var userIDs = dBContext.RestaurantUserRestaurantRoles.Where(r => r.RestaurantRoleId == role.Id).Select(r => r.UserId).ToList();
- role.Users = dBContext.Users.Where(u => userIDs.Contains(u.Id)).ToList();
- }
-
- return role;
- }
-
- public List<RestaurantRole> GetRoles(int restaurantId)
- {
- return dBContext.RestaurantRoles.Where(r => r.RestaurantId == restaurantId).ToList();
- }
-
- public void Insert(RestaurantRole Role)
- {
- var users = Role.Users;
- Role.Users = null;
-
- dBContext.Add(Role);
- Save();
-
- foreach (var user in users)
- {
- var userRole = new RestaurantUserRestaurantRole
- {
- UserId = user.Id,
- RestaurantRoleId = Role.Id
- };
- dBContext.Add(userRole);
- }
- Save();
- }
-
- public void Save()
- {
- dBContext.SaveChanges();
- }
-
- public void Update(RestaurantRole Role)
- {
- var prems = Role.Permissions;
- Role.Permissions = null;
-
- var users = Role.Users;
- Role.Users = null;
-
- var usersList = dBContext.RestaurantUserRestaurantRoles.Where(r => r.RestaurantRoleId == Role.Id).Select(r => r.UserId).ToList();
- var userObjectList = users.Select(u => u.Id).ToList();
-
- foreach(var user in users)
- {
- if (!usersList.Contains(user.Id))
- {
- var userRole = new RestaurantUserRestaurantRole
- {
- UserId = user.Id,
- RestaurantRoleId = Role.Id
- };
- dBContext.Add(userRole);
- }
- }
-
- var remove = dBContext.RestaurantUserRestaurantRoles.Where(r => r.RestaurantRoleId == Role.Id && !userObjectList.Contains(r.UserId.Value)).ToList();
- foreach (var rem in remove)
- {
- dBContext.Remove(rem);
- }
-
-
- foreach (var prem in prems)
- {
- if (prem.Id == 0)
- {
- prem.RoleId = Role.Id;
- dBContext.Add(prem);
- }
- else
- {
- dBContext.Entry(prem).State = EntityState.Modified;
- }
- }
-
- dBContext.Entry(Role).State = EntityState.Modified;
- Save();
- }
- }
- }
|