private List <Member> GetMembersByDayOfWeekAndHour(List <Member> membersWithoutTimeEntry, DayOfWeek currentDayOfWeek, int currentHour) { return(membersWithoutTimeEntry .Where(member => member.SendEmailDays != null) .Where(member => ConverterBitMask.DaysOfWeekIntToListDayOfWeekAdaptive(member.SendEmailDays).Any(memberSendDayOfWeek => memberSendDayOfWeek.DayOfWeek == currentDayOfWeek)) .Where(member => member.SendEmailTime == currentHour) .ToList()); }
public Member Convert(MemberView source, Member destination, ResolutionContext context) { return(new Member { DefaultTaskId = source.DefaultTaskId, DefaultProjectId = source.DefaultProjectId, FullName = source.FullName, DateFormatId = source.DateFormatId, WeekStart = (WeekStart)source.WeekStart, IsWeeklyTimeEntryUpdatesSend = source.IsWeeklyTimeEntryUpdatesSend, SendEmailDays = ConverterBitMask.DayOfWeekStringToInt(source.SendEmailDays), SendEmailTime = source.SendEmailTime, TimeFormat = source.TimeFormat, }); }
public MemberView PatchNotifications(MemberNotificationView memberNotificationView) { CheckRelatedEntities(ImpersonatedUserName, out var memberByName); memberByName = Uow.MemberRepository.GetQueryByUserName(ImpersonatedUserName); memberByName.SendEmailTime = memberNotificationView.SendEmailTime; memberByName.SendEmailDays = ConverterBitMask.DayOfWeekStringToInt(memberNotificationView.SendEmailDays); memberByName.IsWeeklyTimeEntryUpdatesSend = memberNotificationView.IsWeeklyTimeEntryUpdatesSend; Uow.MemberRepository.Update(memberByName); Uow.Save(); Uow.MemberRepository.LinkedCacheClear(); var urlIcon = _avatarService.GetUrlIcon(memberByName.Id); var memberView = memberByName.GetView(Mapper, urlIcon); return(memberView); }
public MemberView PatchNotifications(string userName, MemberNotificationView memberNotificationView) { CheckRelatedEntities(userName, out var memberByName); memberByName = Uow.MemberRepository.GetQueryByUserName(userName); memberByName.SendEmailTime = memberNotificationView.SendEmailTime; memberByName.SendEmailDays = ConverterBitMask.DayOfWeekStringToInt(memberNotificationView.SendEmailDays); memberByName.IsWeeklyTimeEntryUpdatesSend = memberNotificationView.IsWeeklyTimeEntryUpdatesSend; try { Uow.MemberRepository.Update(memberByName); Uow.Save(); Uow.MemberRepository.LinkedCacheClear(); return(memberByName.GetView(Mapper)); } catch (Exception e) { throw new CoralTimeDangerException("An error occurred while updating member", e); } }
public MemberView Convert(Member source, MemberView destination, ResolutionContext context) { return(new MemberView { UserName = source.User.UserName, Email = source.User.Email, Id = source.Id, IsActive = source.User.IsActive, DefaultProjectId = source.DefaultProjectId, IsManager = source.User.IsManager, IsAdmin = source.User.IsAdmin, DefaultTaskId = source.DefaultTaskId, FullName = source.FullName, IsWeeklyTimeEntryUpdatesSend = source.IsWeeklyTimeEntryUpdatesSend, DateFormatId = source.DateFormatId, DateFormat = new GetDateFormat().GetDateFormatById(source.DateFormatId), SendEmailDays = ConverterBitMask.DayOfWeekIntToString(source.SendEmailDays), TimeFormat = source.TimeFormat, SendEmailTime = source.SendEmailTime, WeekStart = (int)source.WeekStart }); }
public async Task <MemberView> Update(MemberView memberView) { var memberByName = Uow.MemberRepository.GetQueryByUserName(CurrentUserName); if (memberByName == null) { throw new CoralTimeEntityNotFoundException($"Member with userName {CurrentUserName} not found."); } if (!memberByName.User.IsActive) { throw new CoralTimeEntityNotFoundException($"Member with userName {CurrentUserName} is not active."); } var memberId = memberView.Id; if (memberByName.Id != memberId && !memberByName.User.IsAdmin) { throw new CoralTimeForbiddenException($"Member with userName {CurrentUserName} can't change other user's data."); } if (!EmailChecker.IsValidEmail(memberView.Email)) { throw new CoralTimeSafeEntityException("Invalid email"); } var member = Uow.MemberRepository.GetQueryByMemberId(memberId); if (_isDemo) { if (member.User.Email != memberView.Email) { throw new CoralTimeForbiddenException("Email can't be changed on demo site"); } if (member.User.UserName != memberView.UserName) { throw new CoralTimeForbiddenException("Username can't be changed on demo site"); } if (member.User.IsActive != memberView.IsActive) { throw new CoralTimeForbiddenException("Status can't be changed on demo site"); } if (member.FullName != memberView.FullName) { throw new CoralTimeForbiddenException("Full name can't be changed on demo site"); } } if (memberByName.User.IsAdmin) { var newEmail = memberView.Email; var newUserName = memberView.UserName; var newIsActive = memberView.IsActive; var newIsAdmin = memberView.IsAdmin; if (member.User.Email != newEmail || member.User.UserName != newUserName || member.User.IsActive != newIsActive || member.User.IsAdmin != newIsAdmin) { member.User.Email = newEmail; member.User.UserName = newUserName; var updateResult = await _userManager.UpdateAsync(member.User); if (updateResult.Succeeded) { var startRole = member.User.IsAdmin ? ApplicationRoleAdmin : ApplicationRoleUser; if (memberId != memberByName.Id) { member.User.IsActive = newIsActive; member.User.IsAdmin = newIsAdmin; } var finishRole = member.User.IsAdmin ? ApplicationRoleAdmin : ApplicationRoleUser; try { Uow.MemberRepository.Update(member); Uow.Save(); if (startRole != finishRole) { await _userManager.RemoveFromRoleAsync(member.User, startRole); await _userManager.AddToRoleAsync(member.User, finishRole); } UpdateUserClaims(member.Id); Uow.MemberRepository.LinkedCacheClear(); } catch (Exception e) { throw new CoralTimeDangerException("An error occurred while updating member", e); } } else { CheckMembersErrors(updateResult.Errors.Select(e => new IdentityErrorView { Code = e.Code, Description = e.Description })); } } } var memberById = Uow.MemberRepository.GetQueryByMemberId(memberId); await ChangeEmailByUserAsync(memberById, memberView.Email); memberById.FullName = memberView.FullName; memberById.DefaultProjectId = memberView.DefaultProjectId; memberById.DefaultTaskId = memberView.DefaultTaskId; memberById.DateFormatId = memberView.DateFormatId; memberById.TimeZone = memberView.TimeZone; memberById.WeekStart = (WeekStart)memberView.WeekStart; memberById.IsWeeklyTimeEntryUpdatesSend = memberView.IsWeeklyTimeEntryUpdatesSend; memberById.TimeFormat = memberView.TimeFormat; memberById.SendEmailTime = memberView.SendEmailTime; memberById.SendEmailDays = ConverterBitMask.DayOfWeekStringToInt(memberView.SendEmailDays); try { Uow.MemberRepository.Update(memberById); if (Uow.Save() > 0) { UpdateUserClaims(memberById.Id); } Uow.MemberRepository.LinkedCacheClear(); } catch (Exception e) { Uow.MemberRepository.LinkedCacheClear(); throw new CoralTimeDangerException("An error occurred while updating member", e); } var memberByIdResult = Uow.MemberRepository.LinkedCacheGetById(memberById.Id); var result = memberByIdResult.GetView(Mapper); return(result); }