public async Task <bool> Create(CreateNotifyParams entity) { try { var accessTokenLines = _context.Users.Where(x => entity.Users.Contains(x.ID)).Select(x => x.AccessTokenLineNotify).ToList(); foreach (var token in accessTokenLines) { await _lineService.SendMessage(new MessageParams { Message = entity.Message, Token = token }); } var item = new Notification { TaskID = entity.TaskID, Message = entity.Message, URL = entity.URL, Function = entity.AlertType.ToString() }; if (entity.UserID == 0 || entity.UserID == null) { item.UserID = ADMIN; } else { item.UserID = entity.UserID.Value; } await _context.Notifications.AddAsync(item); await _context.SaveChangesAsync(); if (entity.Users.Count > 0 || entity.Users != null) { var details = new List <NotificationDetail>(); foreach (var user in entity.Users) { details.Add(new NotificationDetail { NotificationID = item.ID, UserID = user, Seen = false }); } await _context.AddRangeAsync(details); } await _context.SaveChangesAsync(); return(true); } catch (Exception ex) { await _context.AddRangeAsync(new CheckTask { Function = entity.Message }); await _context.SaveChangesAsync(); return(false); } }
public async Task <bool> Create(CreateNotifyParams entity) { try { var item = new Notification { TaskID = entity.TaskID, UserID = entity.UserID, Message = entity.Message, URL = entity.URL, Function = entity.AlertType.ToString() }; await _context.Notifications.AddAsync(item); await _context.SaveChangesAsync(); if (entity.Users.Count > 0 || entity.Users != null) { var details = new List <NotificationDetail>(); foreach (var user in entity.Users) { details.Add(new NotificationDetail { NotificationID = item.ID, UserID = user, Seen = false }); } await _context.AddRangeAsync(details); } await _context.SaveChangesAsync(); return(true); } catch (Exception) { return(false); } }
public async Task <Tuple <bool, string> > AddMember(AddMemberViewModel addMember) { try { var listUsers = new List <int>(); if (addMember.Users.Length > 0) { //get old member list var oldMembers = await _teamMemberRepository.FindAll().Where(x => x.ProjectID == addMember.ProjectID).Select(x => x.UserID).ToArrayAsync(); //new member list from client var newMembers = addMember.Users; //get value of old members list without value in new member list var withOutInOldMembers = newMembers.Except(oldMembers).ToArray(); if (withOutInOldMembers.Length > 0) { var members = new List <TeamMember>(); foreach (var pic in withOutInOldMembers) { members.Add(new TeamMember { UserID = pic, ProjectID = addMember.ProjectID }); } await _teamMemberRepository.AddMultipleAsync(members); var project = await _projectRepository.FindByIdAsync(addMember.ProjectID); var user = await _userRepository.FindByIdAsync(addMember.UserID); string urlResult = $"/project-detail/{project.ID}"; var message = $"The {user.Username.ToTitleCase()} account has assigned you as member of {project.Name} project"; var notify = new CreateNotifyParams { AlertType = AlertType.Member, Message = message, Users = withOutInOldMembers.Distinct().ToList(), URL = urlResult, UserID = addMember.UserID }; var addNotify = _mapper.Map <Notification>(notify); await _notificationRepository.AddAsync(addNotify); listUsers.AddRange(withOutInOldMembers); } else { //Day la userID se bi xoa var withOutInNewMembers = oldMembers.Where(x => !newMembers.Contains(x)).ToArray(); var listDeleteMembers = await _teamMemberRepository.FindAll().Where(x => withOutInNewMembers.Contains(x.UserID) && x.ProjectID.Equals(addMember.ProjectID)).ToListAsync(); _teamMemberRepository.RemoveMultiple(listDeleteMembers); } } await _unitOfWork.Commit(); return(Tuple.Create(true, string.Join(",", listUsers.Distinct().ToArray()))); } catch (Exception) { return(Tuple.Create(false, "")); } }
private async Task <string> AlertTasksIsLate(TreeViewTask item, string message, bool isProject) { var mes = string.Empty; var notifyParams = new CreateNotifyParams { TaskID = item.ID, Users = GetListUserRelateToTask(item.ID, isProject), Message = message, URL = "", AlertType = Data.Enum.AlertType.BeLate }; var update = await _context.Tasks.FindAsync(item.ID); if (update.periodType != Data.Enum.PeriodType.SpecificDate) { update.Status = false; update.FinishedMainTask = false; await _context.SaveChangesAsync(); } var history = new History { TaskID = item.ID, Status = false }; switch (item.periodType) { case Data.Enum.PeriodType.Daily: history.Deadline = update.DueDateDaily; break; case Data.Enum.PeriodType.Weekly: history.Deadline = update.DateOfWeekly; break; case Data.Enum.PeriodType.Monthly: history.Deadline = update.DateOfMonthly; break; case Data.Enum.PeriodType.Quarterly: history.Deadline = update.DueDateQuarterly; break; case Data.Enum.PeriodType.Yearly: history.Deadline = update.DueDateYearly + ", " + DateTime.Now.Year; break; default: break; } if (notifyParams.Users.Count > 0) { await PushTaskToHistory(history); await Create(notifyParams); if (update.periodType != Data.Enum.PeriodType.SpecificDate) { mes = $"{update.JobName}<br/>{update.SpecificDate.ToParseStringDateTime().ToStringFormat("{0:f}")}"; } } return(mes); }