public void NotifyRejectedKudosLogSender(KudosLog kudosLog) { var emailRecipient = _usersDbSet.SingleOrDefault(user => user.Id == kudosLog.CreatedBy); if (emailRecipient == null) { return; } var organizationName = GetOrganizationName(kudosLog.OrganizationId).ShortName; var subject = Resources.Models.Kudos.Kudos.RejectedKudosEmailSubject; var userNotificationSettingsUrl = _appSettings.UserNotificationSettingsUrl(organizationName); var kudosProfileUrl = _appSettings.KudosProfileUrl(organizationName, kudosLog.CreatedBy); var emailTemplateViewModel = new KudosRejectedEmailTemplateViewModel( userNotificationSettingsUrl, kudosLog.Employee.FullName, kudosLog.Points, kudosLog.KudosTypeName, kudosLog.Comments, kudosLog.RejectionMessage, kudosProfileUrl); var body = _mailTemplate.Generate(emailTemplateViewModel, EmailTemplateCacheKeys.KudosRejected); _mailingService.SendEmail(new EmailDto(emailRecipient.Email, subject, body)); }
private async Task SetWelcomeKudosAsync(ApplicationUser applicationUser) { var welcomeKudosDto = await _kudosService.GetWelcomeKudosAsync(); if (welcomeKudosDto.WelcomeKudosAmount <= 0) { return; } var welcomeKudos = new KudosLog { EmployeeId = applicationUser.Id, OrganizationId = applicationUser.OrganizationId, Comments = welcomeKudosDto.WelcomeKudosComment, Points = welcomeKudosDto.WelcomeKudosAmount, Created = DateTime.UtcNow, Modified = DateTime.UtcNow, Status = KudosStatus.Pending, MultiplyBy = 1, KudosSystemType = KudosTypeEnum.Welcome, KudosTypeValue = Convert.ToDecimal(KudosTypeEnum.Welcome), KudosTypeName = KudosTypeEnum.Welcome.ToString() }; _uow.GetDbSet <KudosLog>().Add(welcomeKudos); }
public void Approve_SenderCannotApproveKudos() { var log = new KudosLog { CreatedBy = Guid.NewGuid().ToString() }; Assert.Throws <ValidationException>(() => log.Approve(_userId)); }
public void Approve_LogAlreadyProcessed() { var log = new KudosLog { Status = KudosStatus.Rejected }; Assert.Throws <ValidationException>(() => log.Approve(_userId)); }
public void IsRecipientDeleted_WhenNoEmployeeIsPulledFromDb() { var log = new KudosLog { EmployeeId = Guid.NewGuid().ToString() }; Assert.That(log.IsRecipientDeleted(), Is.True); }
public KudosLog CreateLoyaltyKudosLog(ApplicationUser recipient, KudosType loyaltyKudosType, int organizationId, int[] kudosYearlyMultipliers, int yearOfEmployment) { if (yearOfEmployment <= 0) { throw new ArgumentException("Invalid argument", nameof(yearOfEmployment)); } if (organizationId <= 0) { throw new ArgumentException("Invalid argument", nameof(organizationId)); } if (recipient == null) { throw new ArgumentNullException(nameof(recipient)); } if (loyaltyKudosType == null) { throw new ArgumentNullException(nameof(loyaltyKudosType)); } if (kudosYearlyMultipliers == null || kudosYearlyMultipliers.Length == 0) { throw new ArgumentException("Invalid argument", nameof(kudosYearlyMultipliers)); } var timestamp = DateTime.UtcNow; var yearlyLoyaltyKudosMultiplier = CalculateYearlyMultiplier(yearOfEmployment, kudosYearlyMultipliers); if (yearlyLoyaltyKudosMultiplier == 0) { return(null); } var loyaltyLog = new KudosLog { Modified = timestamp, CreatedBy = LoyaltyKudosBotName, Comments = CreateLoyaltyKudosComment(yearOfEmployment), EmployeeId = recipient.Id, KudosTypeName = loyaltyKudosType.Name, KudosTypeValue = loyaltyKudosType.Value, MultiplyBy = yearlyLoyaltyKudosMultiplier, Points = yearlyLoyaltyKudosMultiplier * loyaltyKudosType.Value, Status = KudosStatus.Approved, OrganizationId = organizationId }; if (recipient.EmploymentDate.HasValue) { loyaltyLog.Created = recipient.EmploymentDate.Value.AddYears(yearOfEmployment); } recipient.ReceiveKudos(loyaltyLog); return(loyaltyLog); }
public void Reject_LogAlreadyProcessed() { var log = new KudosLog { Status = KudosStatus.Approved }; Assert.Throws <ValidationException>(() => log.Reject(_userId, "reason")); }
public void Approve_SenderCannotSendKudosToSelf() { var log = new KudosLog { EmployeeId = _userId }; Assert.Throws <ValidationException>(() => log.Approve(_userId)); }
public void Approve_ApprovesAndSetsModifiedAttributes() { var log = new KudosLog { Status = KudosStatus.Pending, EmployeeId = Guid.NewGuid().ToString(), CreatedBy = Guid.NewGuid().ToString() }; log.Approve(_userId); Assert.That(log.Status, Is.EqualTo(KudosStatus.Approved)); Assert.That(log.ModifiedBy, Is.EqualTo(_userId)); Assert.That(log.Modified, Is.InRange(DateTime.UtcNow.AddSeconds(-10), DateTime.UtcNow.AddSeconds(10))); }
public void Reject_RejectsAndSetsModifiedAttributes() { var log = new KudosLog { Status = KudosStatus.Pending, EmployeeId = Guid.NewGuid().ToString(), CreatedBy = Guid.NewGuid().ToString() }; log.Reject(_userId, "reason"); Assert.That(log.Status, Is.EqualTo(KudosStatus.Rejected)); Assert.That(log.RejectionMessage, Is.EqualTo("reason")); Assert.That(log.ModifiedBy, Is.EqualTo(_userId)); Assert.That(log.Modified, Is.InRange(DateTime.UtcNow.AddSeconds(-10), DateTime.UtcNow.AddSeconds(10))); }
public void NotifyApprovedKudosRecipient(KudosLog kudosLog) { var organizationName = GetOrganizationName(kudosLog.OrganizationId).ShortName; var sendingUserFullName = GetUserFullName(kudosLog.CreatedBy); var userNotificationSettingsUrl = _appSettings.UserNotificationSettingsUrl(organizationName); var kudosProfileUrl = _appSettings.KudosProfileUrl(organizationName, kudosLog.EmployeeId); var subject = Resources.Models.Kudos.Kudos.EmailSubject; var emailTemplateViewModel = new KudosReceivedDecreasedEmailTemplateViewModel( userNotificationSettingsUrl, kudosLog.Points, kudosLog.KudosTypeName, sendingUserFullName == null ? ConstBusinessLayer.DeletedUserName : sendingUserFullName, kudosLog.Comments, kudosProfileUrl); var body = _mailTemplate.Generate(emailTemplateViewModel, EmailTemplateCacheKeys.KudosReceived); _mailingService.SendEmail(new EmailDto(kudosLog.Employee.Email, subject, body)); }
public async Task NotifyApprovedKudosDecreaseRecipientAsync(KudosLog kudosLog) { var organizationName = (await GetOrganizationNameAsync(kudosLog.OrganizationId)).ShortName; var sendingUserFullName = await GetUserFullNameAsync(kudosLog.CreatedBy); var userNotificationSettingsUrl = _appSettings.UserNotificationSettingsUrl(organizationName); var kudosProfileUrl = _appSettings.KudosProfileUrl(organizationName, kudosLog.EmployeeId); var subject = Resources.Models.Kudos.Kudos.MinusKudosEmailSubject; var emailTemplateViewModel = new KudosReceivedDecreasedEmailTemplateViewModel(userNotificationSettingsUrl, kudosLog.Points, kudosLog.KudosTypeName, sendingUserFullName ?? BusinessLayerConstants.DeletedUserName, kudosLog.Comments, kudosProfileUrl); var body = _mailTemplate.Generate(emailTemplateViewModel, EmailTemplateCacheKeys.KudosDecreased); await _mailingService.SendEmailAsync(new EmailDto(kudosLog.Employee.Email, subject, body)); }
private static KudosLog CreateKudosLogForBasket(KudosBasketDonationDto donation, KudosType kudosType, string logComment, string userId) { var timestamp = DateTime.UtcNow; var kudosLog = new KudosLog { Created = timestamp, Modified = timestamp, CreatedBy = donation.UserId, Points = donation.DonationAmount, EmployeeId = userId, MultiplyBy = KudosMultiplier, Status = KudosStatus.Approved, Comments = logComment, OrganizationId = donation.OrganizationId, KudosTypeName = kudosType.Name, KudosTypeValue = kudosType.Value, KudosSystemType = kudosType.Type }; return(kudosLog); }
private void InsertKudosLog(AddKudosDTO kudosDTO, KudosStatus status) { var log = new KudosLog { CreatedBy = kudosDTO.KudosLog.UserId, EmployeeId = kudosDTO.ReceivingUser.Id, ModifiedBy = kudosDTO.KudosLog.UserId, MultiplyBy = kudosDTO.KudosLog.MultiplyBy, KudosTypeName = kudosDTO.KudosType.Name, KudosTypeValue = kudosDTO.KudosType.Value, KudosSystemType = kudosDTO.KudosType.Type, Status = status, Comments = kudosDTO.KudosLog.Comment, Created = DateTime.UtcNow, Modified = DateTime.UtcNow, OrganizationId = kudosDTO.KudosLog.OrganizationId, Points = kudosDTO.TotalKudosPointsInLog, PictureId = kudosDTO.PictureId }; _kudosLogsDbSet.Add(log); }
private void SetWelcomeKudos(ApplicationUser applicationUser) { var welcomeKudosDTO = _kudosService.GetWelcomeKudos(); if (welcomeKudosDTO.WelcomeKudosAmount > 0) { KudosLog welcomeKudos = new KudosLog { EmployeeId = applicationUser.Id, OrganizationId = applicationUser.OrganizationId, Comments = welcomeKudosDTO.WelcomeKudosComment, Points = welcomeKudosDTO.WelcomeKudosAmount, Created = DateTime.UtcNow, Modified = DateTime.UtcNow, Status = KudosStatus.Pending, MultiplyBy = 1, KudosSystemType = ConstBusinessLayer.KudosTypeEnum.Welcome, KudosTypeValue = (short)ConstBusinessLayer.KudosTypeEnum.Welcome, KudosTypeName = ConstBusinessLayer.KudosTypeEnum.Welcome.ToString() }; _uow.GetDbSet <KudosLog>().Add(welcomeKudos); } }
private void SetWelcomeKudos(ApplicationUser applicationUser) { var organizationDb = _organizationService.GetOrganizationById(applicationUser.OrganizationId); if (organizationDb.KudosWelcomeEnabled) { KudosLog welcomeKudos = new KudosLog { EmployeeId = applicationUser.Id, OrganizationId = applicationUser.OrganizationId, Comments = organizationDb.KudosWelcomeComment, Points = organizationDb.KudosWelcomeAmount, Created = DateTime.UtcNow, Modified = DateTime.UtcNow, Status = KudosStatus.Pending, MultiplyBy = 1, KudosSystemType = ConstBusinessLayer.KudosTypeEnum.Other, KudosTypeValue = (short)ConstBusinessLayer.KudosTypeEnum.Other, KudosTypeName = ConstBusinessLayer.KudosTypeEnum.Other.ToString() }; _uow.GetDbSet <KudosLog>().Add(welcomeKudos); } }
public void ReceiveKudos(KudosLog log) { RemainingKudos += log.Points; TotalKudos += log.Points; Modified = DateTime.UtcNow; }
public void Reject_ReasonMessageIsEmpty() { var log = new KudosLog(); Assert.Throws <ValidationException>(() => log.Reject(_userId, string.Empty)); }
public void Reject_UserIsEmpty() { var log = new KudosLog(); Assert.Throws <ValidationException>(() => log.Reject(string.Empty, "not_empty")); }
public void Approve_UserIsEmpty() { var log = new KudosLog(); Assert.Throws <ValidationException>(() => log.Approve(string.Empty)); }