public async Task <IResponseResult> SaveUserAssigned(AssignUserOnRoleParameters parameters) { var role = await _roleUnitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == parameters.RoleId, include : source => source.Include(a => a.AspNetUsersRoles), disableTracking : false); if (parameters.AssignedUser != null) { foreach (var user in parameters.AssignedUser) { var isExist = role.AspNetUsersRoles.Any(q => q.UserId == user); if (!isExist) { var userRole = new AspNetUsersRoles() { Id = Guid.NewGuid().ToString(), UserId = user, RoleId = parameters.RoleId }; role.AspNetUsersRoles.Add(userRole); } } } if (role.AspNetUsersRoles.Any()) { await _roleUnitOfWork.SaveChanges(); } var userRemove = parameters.AssignedUser is null ? role.AspNetUsersRoles : role.AspNetUsersRoles.Where(q => !parameters.AssignedUser.Contains(q.UserId)); if (userRemove.Any()) { _userRolesUnitOfWork.Repository.RemoveRange(userRemove); await _userRolesUnitOfWork.SaveChanges(); } return(ResponseResult.GetRepositoryActionResult(true, status: HttpStatusCode.Created, message: HttpStatusCode.Created.ToString())); }
public async Task <IResponseResult> SaveScreens(ScreensAssignedParameters parameters) { if (parameters.ScreenAssigned != null) { foreach (var ScreenId in parameters.ScreenAssigned) { var isExists = await _menuRoleUnitOfWork.Repository.FirstOrDefaultAsync(q => q.MenuId == ScreenId && q.RoleId == parameters.RoleId) != null; if (!isExists) { var obj = new MenuRoles() { Id = Guid.NewGuid().ToString(), RoleId = parameters.RoleId, MenuId = ScreenId }; _menuRoleUnitOfWork.Repository.Add(obj); } } } if (parameters.ScreenAssignedRemove != null) { var dataRemoved = await _menuRoleUnitOfWork.Repository.FindAsync(q => parameters.ScreenAssignedRemove.Contains(q.MenuId) && q.RoleId == parameters.RoleId); _menuRoleUnitOfWork.Repository.RemoveRange(dataRemoved); } await _menuRoleUnitOfWork.SaveChanges(); return(ResponseResult.GetRepositoryActionResult(true, status: HttpStatusCode.Created, message: HttpStatusCode.Created.ToString())); }
public async Task <IDataPagging> GetUsers(GetAllUserParameters parameters) { int limit = parameters.PageSize; int offset = (parameters.PageNumber * parameters.PageSize); var users = await _unitOfWork.Repository.FindPaggedAsync(predicate : PredicateBuilderFunction(parameters), skip : offset, take : limit, parameters.OrderByValue); var usesrPagging = users.Item2; if (!usesrPagging.Any()) { var res = ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString()); return(new DataPagging(0, 0, 0, res)); } var usersDto = Mapper.Map <IEnumerable <UserDto> >(usesrPagging); var ids = usersDto.Select(q => Convert.ToString(q?.Id)).ToList(); var userRoles = await _userRolesUnitOfWork.Repository.FindAsync(q => ids.Contains(q.UserId)); var roleIds = userRoles.Select(q => q.RoleId).ToList(); var roles = await _roleUnitOfWork.Repository.FindAsync(q => roleIds.Contains(q.Id)); foreach (var user in usersDto) { var userRoleIds = userRoles.Where(q => q.UserId == user.Id.ToString()).Select(q => q.RoleId).ToList(); var userRolesData = roles.Where(q => userRoleIds.Contains(q.Id)).ToList(); var rolesString = userRolesData.Select(q => q.Name).ToList(); user.Roles = (!rolesString.Any()) ? null : String.Join(",", rolesString); } var repoResult = ResponseResult.GetRepositoryActionResult(usersDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()); return(new DataPagging(parameters.PageNumber, parameters.PageSize, users.Item1, repoResult)); }
public async Task <IResponseResult> GetScreens(string roleId, string menuId, string childId) { var screenDto = new List <ScreenDto>(); var role = await _roleUnitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == roleId, include : source => source.Include(a => a.Menu), disableTracking : false); var dataAssigned = role.Menu.Select(q => q.MenuId).ToList(); if (string.IsNullOrEmpty(menuId) || menuId == "null") { var menuu = await _unitOfWork.Repository.FindAsync(q => !(q.IsStop ?? false) && !dataAssigned.Contains(q.Id), include : source => source.Include(a => a.Children).Include(b => b.Parent), disableTracking : false); var dtAll = menuu.Where(s => s.Children.Count == 0).Distinct().ToList(); foreach (var item in dtAll) { var screen = new ScreenDto() { Id = item.Id, ScreenNameAr = item.Parent == null ? item.ScreenNameAr : item.Parent.ScreenNameAr + ">" + item.ScreenNameAr, ScreenNameEn = item.Parent == null ? item.ScreenNameEn : item.Parent.ScreenNameEn + ">" + item.ScreenNameEn }; screenDto.Add(screen); } return(ResponseResult.GetRepositoryActionResult(screenDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString())); } var parent = new Menus(); if (string.IsNullOrEmpty(childId) || childId == "null") { parent = await _unitOfWork.Repository.FirstOrDefaultAsync(q => !(q.IsStop ?? false) && q.Id == menuId, include : source => source.Include(a => a.Children)); } else { parent = await _unitOfWork.Repository.FirstOrDefaultAsync(q => !(q.IsStop ?? false) && q.Id == childId, include : source => source.Include(a => a.Children), disableTracking : false); } var idss = parent.Children.Select(q => q.Id).ToList(); _menuIdList.Add(parent.Id); _menuIdList.AddRange(idss); await GetChilds(idss); var MenuIdsPass = _menuIdList.Distinct().ToList(); var dataRes = await _unitOfWork.Repository.FindAsync(q => !(q.IsStop ?? false) && !dataAssigned.Contains(q.Id) && MenuIdsPass.Contains(q.Id), include : source => source.Include(a => a.Children).Include(b => b.Parent), disableTracking : false); var data = dataRes.Where(s => s.Children.Count == 0).Distinct().ToList(); foreach (var item in data) { var screen = new ScreenDto() { Id = item.Id, ScreenNameAr = item.Parent == null ? item.ScreenNameAr : item.Parent.ScreenNameAr + ">" + item.ScreenNameAr, ScreenNameEn = item.Parent == null ? item.ScreenNameEn : item.Parent.ScreenNameEn + ">" + item.ScreenNameEn }; screenDto.Add(screen); } return(ResponseResult.GetRepositoryActionResult(screenDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString())); }
public async override Task <IResponseResult> DeleteAsync(object id) { if (id == null) { return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString())); } var user = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == (long)id); user.IsDeleted = true; _unitOfWork.Repository.Update(user, user.Id); await _unitOfWork.SaveChanges(); return(ResponseResult.GetRepositoryActionResult(true, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString())); }
public async override Task <IResponseResult> GetByIdAsync(object id) { var user = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == (long)id); if (user == null) { return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString())); } var userDto = Mapper.Map <UserDto>(user); userDto.CountryName = "Egypt"; userDto.CityName = "Cairo"; userDto.GenderName = userDto.Gender == true ? "Male" : "Female"; return(ResponseResult.GetRepositoryActionResult(userDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString())); }
public async override Task <IResponseResult> DeleteAsync(object id) { try { var role = await _unitOfWork.Repository.GetAsync(id); role.IsDeleted = true; _unitOfWork.Repository.Update(role, role.Id); await _unitOfWork.SaveChanges(); return(result = ResponseResult.GetRepositoryActionResult(result: true, status: HttpStatusCode.Accepted)); } catch (Exception e) { result.Message = e.InnerException != null ? e.InnerException.Message : e.Message; result = new ResponseResult(null, HttpStatusCode.InternalServerError, e, result.Message); return(result); } }
public async Task <IDataPagging> GetRoles(GetAllRoleParameters parameters) { //Note When data return item1 used for count and item2 for list after pagging int limit = parameters.PageSize; int offset = (parameters.PageNumber * parameters.PageSize); var roles = await _unitOfWork.Repository.FindPaggedAsync(predicate : PredicateBuilderFunction(parameters), skip : offset, take : limit, parameters.OrderByValue); var rolesPagging = roles.Item2; if (!rolesPagging.Any()) { var result = ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString()); return(new DataPagging(0, 0, 0, result)); } ; var RolesDto = Mapper.Map <IEnumerable <AspNetRoles>, IEnumerable <RoleDto> >(rolesPagging); var repoResult = ResponseResult.GetRepositoryActionResult(RolesDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()); return(new DataPagging(parameters.PageNumber, parameters.PageSize, roles.Item1, repoResult)); }
public async override Task <IResponseResult> UpdateAsync(UserDto model) { if (model == null) { return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString())); } var isExist = await _unitOfWork.Repository.FirstOrDefaultAsync(q => (q.UserName == model.UserName || q.Email == model.Email || (q.PhoneNumber == model.PhoneNumber && (model.PhoneNumber != "" && model.PhoneNumber != null))) && q.Id != model.Id && q.IsDeleted != true) != null; if (isExist) { return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NotAcceptable, message: HttpStatusCode.NotAcceptable.ToString())); } var original = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.Id == model.Id); model.SecurityStamp = Guid.NewGuid().ToString(); var user = Mapper.Map(model, original); _unitOfWork.Repository.Update(user, user.Id); await _unitOfWork.SaveChanges(); return(ResponseResult.GetRepositoryActionResult(model, status: HttpStatusCode.Accepted, message: HttpStatusCode.Accepted.ToString())); }
public async override Task <IResponseResult> AddAsync(UserDto model) { if (model == null) { return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NoContent, message: HttpStatusCode.NoContent.ToString())); } var isExist = await _unitOfWork.Repository.IsExists(q => (q.UserName == model.UserName || q.Email == model.Email || (q.PhoneNumber == model.PhoneNumber && (model.PhoneNumber != "" && model.PhoneNumber != null))) && q.IsDeleted != true); if (isExist) { return(ResponseResult.GetRepositoryActionResult(status: HttpStatusCode.NotAcceptable, message: HttpStatusCode.NotAcceptable.ToString())); } var data = await _unitOfWork.Repository.FindAsync(q => q != null); model.Id = data == null ? 1000 : (1000 + data.Count()); model.SecurityStamp = Guid.NewGuid().ToString(); var user = Mapper.Map <AspNetUsers>(model); _unitOfWork.Repository.Add(user); await _unitOfWork.SaveChanges(); return(ResponseResult.GetRepositoryActionResult(model, status: HttpStatusCode.Created, message: HttpStatusCode.Created.ToString())); }
public async Task <IResponseResult> GetMenu(string userId) { var userRoles = await _userRoleUnitOfWork.Repository.FindAsync(q => q.UserId == userId); var roles = userRoles.Select(q => q.RoleId).ToList(); var data = new List <Menus>(); if (roles.Any()) { if (roles[0] == "c21c91c0-5c2f-45cc-ab6d-1d256538a5ee") { var menuData = await _unitOfWork.Repository.FindAsync(q => !(q.IsStop ?? false) && q.ParentId == null, include : source => source.Include(a => a.Children).ThenInclude(b => b.Children), disableTracking : false); data = menuData.ToList(); } else { var roleMenu = await _roleUnitOfWork.Repository.FindAsync(q => roles.Contains(q.Id), include : source => source.Include(a => a.Menu).ThenInclude(b => b.Menus), disableTracking : false); var menuIds = roleMenu.SelectMany(q => q.Menu.Select(m => m.MenuId)).ToList(); var userMenu = await _unitOfWork.Repository.FindAsync(q => !(q.IsStop ?? false) && menuIds.Contains(q.Id), include : source => source.Include(a => a.Parent).ThenInclude(b => b.Parent).ThenInclude(q => q.Parent), disableTracking : false); var menu = new List <Menus>(); foreach (var item in userMenu) { if (item.Parent == null) { menu.Add(item); } else if (item.Parent.Parent == null) { var parent = menu.Where(q => q.Id == item.Parent.Id).FirstOrDefault(); bool parentExist = parent != null; if (!parentExist) { item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr)); var m = item.Parent; m.Children.Add(item); menu.Add(m); } else { parent.Children.Add(item); } } else if (item.Parent.Parent.Parent == null) { var parent = menu.Where(q => q.Id == item.Parent.Parent.Id).FirstOrDefault(); bool parentExist = parent != null; if (!parentExist) { item.Parent.Parent.Children.ToList().ForEach(attr => item.Parent.Parent.Children.Remove(attr)); item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr)); var m = item.Parent.Parent; item.Parent.Children.Add(item); m.Children.Add(item.Parent); menu.Add(m); } else { var parentChild = parent.Children.Where(q => q.Id == item.Parent.Id).FirstOrDefault(); bool parentChildExist = parentChild != null; if (!parentChildExist) { item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr)); item.Parent.Children.Add(item); parentChild.Children.Add(item.Parent); } else { parentChild.Children.Add(item); } } } else { var parent = menu.Where(q => q.Id == item.Parent.Parent.Parent.Id).FirstOrDefault(); bool parentExist = parent != null; if (!parentExist) { item.Parent.Parent.Parent.Children.ToList().ForEach(attr => item.Parent.Parent.Children.Remove(attr)); item.Parent.Parent.Children.ToList().ForEach(attr => item.Parent.Parent.Children.Remove(attr)); item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr)); var m = item.Parent.Parent.Parent; item.Parent.Children.Add(item); item.Parent.Parent.Children.Add(item.Parent); m.Children.Add(item.Parent.Parent); menu.Add(m); } else { var parentChild = parent.Children.Where(q => q.Id == item.Parent.Parent.Id).FirstOrDefault(); bool parentChildExist = parentChild != null; if (!parentChildExist) { item.Parent.Parent.Children.ToList().ForEach(attr => item.Parent.Parent.Children.Remove(attr)); item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr)); item.Parent.Children.Add(item); item.Parent.Parent.Children.Add(item.Parent); parent.Children.Add(item.Parent.Parent); } else { var parentChild1 = parentChild.Children.Where(q => q.Id == item.Parent.Id).FirstOrDefault(); bool parentChild1Exist = parentChild1 != null; if (!parentChild1Exist) { item.Parent.Children.ToList().ForEach(attr => item.Parent.Children.Remove(attr)); item.Parent.Children.Add(item); parentChild.Children.Add(item.Parent); } else { parentChild1.Children.Add(item); } } } } } data = menu; } } var menuDto = Mapper.Map <List <Menus>, List <MenuDto> >(data); return(ResponseResult.GetRepositoryActionResult(menuDto, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString()));; }
public async Task <IResponseResult> IsPhoneExists(string phone, long id) { var res = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.PhoneNumber == phone && q.Id != id && q.IsDeleted != true); return(ResponseResult.GetRepositoryActionResult(res != null, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString())); }
public async Task <IResponseResult> IsEmailExists(string email, long id) { var res = await _unitOfWork.Repository.FirstOrDefaultAsync(q => q.Email.ToLower() == email.ToLower() && q.Id != id && q.IsDeleted != true); return(ResponseResult.GetRepositoryActionResult(res != null, status: HttpStatusCode.OK, message: HttpStatusCode.OK.ToString())); }
// Check IsExists public async Task <IResponseResult> IsNameExists(string name, string id) { var result = await _unitOfWork.Repository.IsExists(q => q.Name == name && q.Id != id && !(q.IsDeleted ?? false)); return(ResponseResult.GetRepositoryActionResult(result, status: HttpStatusCode.Accepted, message: HttpStatusCode.Accepted.ToString())); }