public bool AccessGrantedForUser(int taskId) { if (taskId <= 0) { return(false); } string UserId = HttpContextExtensions.GetUserId(httpContextAccessor); if (HttpContextExtensions.IsAdmin(httpContextAccessor)) { return(true); } var myTasks = context.UsersInTasks.Where(t => t.MyTaskId == taskId ).Join(context.TaskTrackerUser, t => t.UserId, f => f.UserId, (t, f) => new { f.UserId } ).Select(t => new { t.UserId }); return(myTasks.Any(t => t.UserId == UserId)); }
public async Task <APIResult> DeclineFriendRequest(UserFriendBL request) { var UserId = HttpContextExtensions.GetUserId(_httpcontext); var friend = _context.UserFriends.FirstOrDefault(uf => uf.FriendId == UserId && uf.UserId == request.FriendId); var user = _context.Users.FirstOrDefault(u => u.Id == UserId); if (friend == null) { return new APIResult() { Success = false, Error = "Аргумент request содержит ссылку на несуществующего пользователя" } } ; _context.UserFriends.Remove(friend); await _context.SaveChangesAsync(); if (user != null) { await _mailService.SendAsync(new MailModelBL() { To = user.Email, Subject = "Ваш запрос на добавление в друзья был отклонён", Body = "Чтобы посмотреть подробности перейдите по ссылке: <br> <a href=\"https://localhost:44347/Friends\">https://localhost:44347/Friends</a>" }); } return(new APIResult() { Success = true }); } }
public async Task <IEnumerable <UserFriendBL> > GetFriends() { var UserId = HttpContextExtensions.GetUserId(_httpcontext); var requests = _context.UserFriends.Where(uf => (uf.UserId == UserId || uf.FriendId == UserId) && uf.IsApproved).ToList(); var users = await _userManager.GetUsersInRoleAsync("User"); var usersList = users.ToList(); var query = from request in requests from user in usersList.Where(user => request.UserId == user.Id && request.UserId != UserId || request.FriendId == user.Id && request.FriendId != UserId) .DefaultIfEmpty() select new { request, user }; return(query.Select(itm => new UserFriendBL() { UserId = itm.request.UserId == UserId ? itm.request.FriendId : itm.request.UserId, FriendId = itm.request.FriendId == UserId ? itm.request.UserId : itm.request.FriendId, AddDate = itm.request.AddDate, IsApproved = itm.request.IsApproved, Friend = new UserProfileBL() { UserId = itm.user.Id, Email = itm.user.Email, FamilyName = itm.user.FamilyName, Name = itm.user.Name, Patronymic = itm.user.Patronymic, Photo = itm.user.Photo, Telephone = itm.user.PhoneNumber, UserName = itm.user.UserName } })); }
public IEnumerable <TaskModelBL> GetNonSubTask(int TaskId) { IEnumerable <MyTask> list = null; if (HttpContextExtensions.IsAdmin(_httpcontext)) { list = context.MyTasks.GetAll(); } else { var idlist = context.UsersInTasks.GetAll().Where(u => u.UserId == HttpContextExtensions.GetUserId(_httpcontext)).Select(u => u.MyTaskId); var subtasks = context.MyTasks.GetAll().Where(st => st.ParentTaskId == TaskId).Select(u => u.Id); list = context.MyTasks.GetAll().Where(t => idlist.Contains(t.Id) && t.Id != TaskId && !subtasks.Any(st => st == t.Id)); } return(list.Select(task => new TaskModelBL() { Id = task.Id, Name = task.Name, StartDate = task.StartDate, TargetDate = task.TargetDate, EndDate = task.EndDate, Details = task.Details, IsRepeating = task.IsRepeating, TaskСategoryId = task.TaskСategoryId, TaskPriorityId = task.TaskPriorityId, ParentTaskId = task.ParentTaskId, files = null })); }
public async Task <IEnumerable <UserFriendBL> > GetMyFriendRequests() { var UserId = HttpContextExtensions.GetUserId(_httpcontext); var Friends = _context.UserFriends.Where(uf => uf.UserId == UserId).ToList(); var users = await _userManager.GetUsersInRoleAsync("User"); var usersList = users.ToList(); var query = from friend in Friends join user in usersList on friend.FriendId equals user.Id select new { friend = friend, friendUser = user }; return(query.Select(itm => new UserFriendBL() { UserId = itm.friend.UserId, FriendId = itm.friend.FriendId, AddDate = itm.friend.AddDate, IsApproved = itm.friend.IsApproved, Friend = new UserProfileBL() { UserId = itm.friendUser.Id, Email = itm.friendUser.Email, FamilyName = itm.friendUser.FamilyName, Name = itm.friendUser.Name, Patronymic = itm.friendUser.Patronymic, Photo = itm.friendUser.Photo, Telephone = itm.friendUser.PhoneNumber, UserName = itm.friendUser.UserName } })); }
public IEnumerable <TaskEditGrantsBL> GetAll() { string UserId = HttpContextExtensions.GetUserId(_httpcontext); var taskIds = context.UsersInTasks.GetAll().Where(ut => ut.UserId == UserId && ut.UserInTaskTypeCode == 1).Select(ut => ut.MyTaskId); var list = (from MyTask in context.MyTasks.GetAll() join TaskEditGrant in context.TaskEditGrants.GetAll() on MyTask.Id equals TaskEditGrant.TaskId select new { task = MyTask, taskgrant = TaskEditGrant }).Where(itm => taskIds.Any(t => t == itm.task.Id) && itm.taskgrant.IsGranted == false); return(list.Select(t => new TaskEditGrantsBL() { TaskId = t.task.Id, Task = new TaskModelBL() { Id = t.task.Id, IsRepeating = t.task.IsRepeating, Details = t.task.Details, EndDate = t.task.EndDate, Name = t.task.Name, ParentTaskId = t.task.ParentTaskId, TaskPriorityId = t.task.TaskPriorityId, TargetDate = t.task.TargetDate, TaskСategoryId = t.task.TaskСategoryId, StartDate = t.task.StartDate }, date = t.taskgrant.date, FriendId = t.taskgrant.FriendId, IsGranted = false })); }
public TaskModelBL GetById(int id) { bool editGrant = false; if (!CheckAccess(id, out MyTask task)) { return(null); } string userId = HttpContextExtensions.GetUserId(_httpcontext); var grantModel = context.TaskEditGrants.GetAll().FirstOrDefault(gr => gr.TaskId == task.Id && gr.FriendId == userId); var isFriendTask = (context.UsersInTasks.GetAll().Where(ut => ut.MyTaskId == task.Id && ut.UserId == userId && ut.UserInTaskTypeCode == 2).Count() > 0); if (grantModel != null) { editGrant = grantModel.IsGranted; } else { if (isFriendTask) { editGrant = false; } else { editGrant = true; } } RepeatingTask repeatingTask = context.RepeatingTasks.GetById(id); return(new TaskModelBL { Id = task.Id, Name = task.Name, StartDate = task.StartDate, TargetDate = task.TargetDate, EndDate = task.EndDate, Details = task.Details, IsRepeating = task.IsRepeating, TaskСategoryId = task.TaskСategoryId, TaskPriorityId = task.TaskPriorityId, ParentTaskId = task.ParentTaskId, Multiplier = repeatingTask?.Multiplier, PeriodCode = repeatingTask?.PeriodCode, UserIds = context.UsersInTasks.GetAll().Where(ut => ut.MyTaskId == task.Id && ut.UserInTaskTypeCode == 2).Select(ut => ut.UserId).ToList(), files = _fileService.GetAll(id).ToList(), EditGrant = editGrant, UserId = userId, IsFriendTask = isFriendTask }); }
public IEnumerable <TaskModelBL> GetAll() { if (HttpContextExtensions.IsAdmin(_httpcontext)) { return(context.MyTasks.GetAll().Select(task => new TaskModelBL() { Id = task.Id, Name = task.Name, StartDate = task.StartDate, TargetDate = task.TargetDate, EndDate = task.EndDate, Details = task.Details, IsRepeating = task.IsRepeating, TaskСategoryId = task.TaskСategoryId, TaskPriorityId = task.TaskPriorityId, ParentTaskId = task.ParentTaskId, files = null, IsFriendTask = false })); } else { var UserId = HttpContextExtensions.GetUserId(_httpcontext); var list = (from MyTask in context.MyTasks.GetAll() join UserInTask in context.UsersInTasks.GetAll() on MyTask.Id equals UserInTask.MyTaskId select new { task = MyTask, usersintask = UserInTask }) .Where(x => x.usersintask.UserId == UserId).ToList(); return(list.Select(item => new TaskModelBL() { Id = item.task.Id, Name = item.task.Name, StartDate = item.task.StartDate, TargetDate = item.task.TargetDate, EndDate = item.task.EndDate, Details = item.task.Details, IsRepeating = item.task.IsRepeating, TaskСategoryId = item.task.TaskСategoryId, TaskPriorityId = item.task.TaskPriorityId, ParentTaskId = item.task.ParentTaskId, files = null, IsFriendTask = (item.usersintask.UserInTaskTypeCode == 2) })); } }
public async Task <APIResult> ChangePassword(ChangePasswordModel model) { if (model.OldPassword == model.NewPassword) { return(new APIResult() { Success = false, Error = "Старый и новый пароли совпадают." }); } string UserId = HttpContextExtensions.GetUserId(_context); ApplicationUser user = await _userManager.FindByIdAsync(UserId); if (user != null) { IdentityResult result = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword); if (result.Succeeded) { return(new APIResult() { Success = true }); } else { return(new APIResult() { Success = false, Error = result.Errors.FirstOrDefault().Description }); } } else { return(new APIResult() { Success = false, Error = "Пользователь не найден" }); } }
public async Task <IEnumerable <UserProfileBL> > GetNonFriends() { var UserId = HttpContextExtensions.GetUserId(_httpcontext); var Friends = _context.UserFriends.Where(uf => uf.UserId == UserId).Select(uf => uf.FriendId).ToList(); var Requests = _context.UserFriends.Where(uf => uf.FriendId == UserId).Select(uf => uf.UserId).ToList(); var users = await _userManager.GetUsersInRoleAsync("User"); var userslist = users.Where(user => user.Id != UserId).ToList(); return(userslist.Where(user => !Friends.Any(item => item == user.Id) && !Requests.Any(item => item == user.Id)).Select(user => new UserProfileBL() { UserId = user.Id, Email = user.Email, FamilyName = user.FamilyName, Name = user.Name, Patronymic = user.Patronymic, Photo = user.Photo, Telephone = user.PhoneNumber, UserName = user.UserName })); }
public async Task <APIResult> AddFriendRequest(UserFriendBL request) { if (request == null) { return new APIResult() { Success = false, Error = "Аргумент request = null" } } ; var UserId = HttpContextExtensions.GetUserId(_httpcontext); var user = _context.Users.FirstOrDefault(u => u.Id == UserId); var model = new UserFriend() { AddDate = request.AddDate, IsApproved = request.IsApproved, FriendId = request.FriendId, UserId = UserId }; _context.UserFriends.Add(model); await _context.SaveChangesAsync(); if (user != null) { await _mailService.SendAsync(new MailModelBL() { To = user.Email, Subject = $"Вам отправлен запрос на добавление в друзья от {user.UserName}", Body = "Чтобы принять запрос перейдите по ссылке: <br> <a href=\"https://localhost:44347/Friends\">https://localhost:44347/Friends</a>" }); } return(new APIResult() { Success = true }); }
public async Task <UserFriendBL> GetFriendRequest(string FriendId) { var UserId = HttpContextExtensions.GetUserId(_httpcontext); if (UserId == null) { return(null); } var friend = _context.UserFriends.FirstOrDefault(uf => uf.FriendId == FriendId && uf.UserId == UserId); if (friend == null) { return(null); } var user = await _userManager.FindByIdAsync(FriendId); return(new UserFriendBL() { UserId = friend.UserId, FriendId = friend.FriendId, AddDate = friend.AddDate, IsApproved = friend.IsApproved, Friend = new UserProfileBL() { UserId = user.Id, Email = user.Email, FamilyName = user.FamilyName, Name = user.Name, Patronymic = user.Patronymic, Photo = user.Photo, Telephone = user.PhoneNumber, UserName = user.UserName } }); }
private bool CheckAccess(int id, out MyTask task) { task = null; if (id <= 0) { return(false); } task = context.MyTasks.GetById(id); if (task == null) { return(false); } return(HttpContextExtensions.IsAdmin(_httpcontext) || context.UsersInTasks.GetAll().Any(u => u.MyTaskId == id && u.UserId == HttpContextExtensions.GetUserId(_httpcontext))); }
public bool Create(TaskModelBL model) { if (model == null) { return(false); } string UserId = HttpContextExtensions.GetUserId(_httpcontext); var user = context.TaskTrackerUser.GetAll().FirstOrDefault(x => x.UserId == UserId); if (user == null) { user = new TaskTrackerUser() { UserId = UserId }; context.TaskTrackerUser.Create(user); } MyTask task = new MyTask { Name = model.Name, StartDate = DateTime.Now, TargetDate = model.TargetDate, Details = model.Details, IsRepeating = model.IsRepeating, TaskСategoryId = model.TaskСategoryId, TaskPriorityId = model.TaskPriorityId, ParentTaskId = model.ParentTaskId }; context.MyTasks.Create(task); var UserInTask = new UsersInTask() { Task = task, UserId = UserId, TaskTrackerUser = user, UserInTaskTypeCode = 1 }; context.UsersInTasks.Create(UserInTask); if (model.Multiplier != null && model.PeriodCode != null) { RepeatingTask repeatingTask = new RepeatingTask { Task = task, PeriodCode = (int)model.PeriodCode, Multiplier = (int)model.Multiplier }; context.RepeatingTasks.Create(repeatingTask); } context.SaveChanges(); foreach (FileModelBL fl in model.files) { _fileService.Create(task.Id, fl); } return(true); }