private void AddKudosRequest(AddKudosLogDTO kudosLog, decimal?points = null) { var kudosDto = MapInitialInfoToDTO(kudosLog, points); var receivingUsers = _usersDbSet .Where(x => kudosLog.ReceivingUserIds.Contains(x.Id) && x.OrganizationId == kudosLog.OrganizationId) .ToList(); var sendingUser = _usersDbSet .FirstOrDefault(x => x.Id == kudosDto.SendingUser.Id && x.OrganizationId == kudosLog.OrganizationId); _kudosServiceValidator.CheckForEmptyUserList(receivingUsers); foreach (var receivingUser in receivingUsers) { _kudosServiceValidator.ValidateUser(receivingUser); kudosDto.ReceivingUser = _mapper.Map <ApplicationUserDTO>(receivingUser); ChooseKudosifyType(kudosDto); } _uow.SaveChanges(false); if (kudosDto.KudosType.Type != KudosTypeEnum.Send) { return; } foreach (var receivingUser in receivingUsers) { _asyncRunner.Run <IKudosNotificationService>(n => n.NotifyAboutKudosSent(kudosDto), _uow.ConnectionName); UpdateProfileKudos(receivingUser, kudosLog); } UpdateProfileKudos(sendingUser, kudosLog); }
private AddKudosDTO GenerateLogForKudosMinusOperation(AddKudosDTO kudosDTO) { var minusKudosType = _kudosTypesDbSet .Where(n => n.Type == ConstBusinessLayer.KudosTypeEnum.Minus) .FirstOrDefault(); var kudosLogForMinusKudos = new AddKudosLogDTO { PointsTypeId = minusKudosType.Id, Comment = kudosDTO.KudosLog.Comment, MultiplyBy = kudosDTO.KudosLog.MultiplyBy, OrganizationId = kudosDTO.KudosLog.OrganizationId, UserId = kudosDTO.KudosLog.UserId }; var minusKudosDTO = new AddKudosDTO { KudosLog = kudosLogForMinusKudos, ReceivingUser = kudosDTO.SendingUser, SendingUser = kudosDTO.ReceivingUser, TotalKudosPointsInLog = kudosDTO.TotalKudosPointsInLog, KudosType = minusKudosType, PictureId = kudosDTO.PictureId }; return(minusKudosDTO); }
private void AddKudosRequest(AddKudosLogDTO kudosLog, decimal?points = null) { var kudosDto = MapInitialInfoToDTO(kudosLog, points); var receivingUsers = _usersDbSet .Where(x => kudosLog.ReceivingUserIds.Contains(x.Id) && x.OrganizationId == kudosLog.OrganizationId) .ToList(); _kudosServiceValidator.CheckForEmptyUserList(receivingUsers); foreach (var receivingUser in receivingUsers) { _kudosServiceValidator.ValidateUser(receivingUser); kudosDto.ReceivingUser = receivingUser; ChooseKudosifyType(kudosDto); } _uow.SaveChanges(false); foreach (var receivingUser in receivingUsers) { if (kudosDto.KudosType.Type == ConstBusinessLayer.KudosTypeEnum.Send) { kudosDto.ReceivingUser = receivingUser; _kudosNotificationService.NotifyAboutKudosSent(kudosDto); UpdateProfileKudos(kudosDto.ReceivingUser, kudosLog); } } if (kudosDto.KudosType.Type == ConstBusinessLayer.KudosTypeEnum.Send) { UpdateProfileKudos(kudosDto.SendingUser, kudosLog); } }
public void AddKudosLog(AddKudosLogDTO kudosDto, decimal?points = null) { if (!UserHasPermission(kudosDto)) { throw new ValidationException(ErrorCodes.KudosTypeNotFound); } AddKudosRequest(kudosDto, points); }
private bool UserHasPermission(AddKudosLogDTO kudosDto) { var kudosType = _kudosTypesDbSet.Find(kudosDto.PointsTypeId); if (kudosType is null) { return(false); } else if (kudosType.IsActive || kudosType.Type == KudosTypeEnum.Send) { return(true); } return(HasKudosAdministratorPermission(kudosDto) ? true : false); }
private bool UserHasPermission(AddKudosLogDTO kudosDto) { var kudosType = _kudosTypesDbSet.AsNoTracking().FirstOrDefault(p => p.Id == kudosDto.PointsTypeId); if (kudosType is null) { return(false); } if (kudosType.IsActive || kudosType.Type == KudosTypeEnum.Send) { return(true); } return(HasKudosAdministratorPermission(kudosDto)); }
public void Should_Return_If_User_Has_No_Available_Monthly_Kudos() { var kudosLog = new AddKudosLogDTO { OrganizationId = 2, PointsTypeId = 2, UserId = "testUserId5", ReceivingUserIds = new List <string>() { "testUserId3", "testUserId4", "testUserId" }, MultiplyBy = 2, Comment = "Comment" }; Assert.Throws <KudosException>(() => _kudosService.AddKudosLog(kudosLog)); }
public void Should_Return_If_User_Has_No_Permission() { var kudosLog = new AddKudosLogDTO { OrganizationId = 2, PointsTypeId = 1, UserId = "testUserId", ReceivingUserIds = new List <string> { "testUserId" }, MultiplyBy = 2, Comment = "Comment", IsActive = true }; Assert.Throws <KudosException>(() => _kudosService.AddKudosLog(kudosLog)); }
public void Should_Return_When_User_Sends_Kudos_To_Himself() { var kudosLog = new AddKudosLogDTO { OrganizationId = 2, PointsTypeId = 2, UserId = "testUserId2", ReceivingUserIds = new List <string>() { "testUserId3", "testUserId2" }, MultiplyBy = 1, Comment = "Comment" }; Assert.Throws <KudosException>(() => _kudosService.AddKudosLog(kudosLog)); }
private AddKudosDTO MapInitialInfoToDTO(AddKudosLogDTO kudosLog, decimal?overridenPoints = null) { var sendingUser = _usersDbSet.Find(kudosLog.UserId); _kudosServiceValidator.ValidateUser(sendingUser); var kudosType = _kudosTypesDbSet.Find(kudosLog.PointsTypeId); _kudosServiceValidator.ValidateKudosType(kudosType); return(new AddKudosDTO { KudosLog = kudosLog, KudosType = kudosType, SendingUser = sendingUser, TotalKudosPointsInLog = overridenPoints ?? kudosLog.MultiplyBy * kudosType.Value, PictureId = kudosLog.PictureId }); }
public void Should_Return_If_Kudos_Logs_Has_Not_Been_Saved_3() { var kudosLog = new AddKudosLogDTO { OrganizationId = 2, PointsTypeId = 3, UserId = "testUserId2", ReceivingUserIds = new List <string>() { "testUserId3", "testUserId4" }, MultiplyBy = 2, Comment = "Comment" }; _kudosService.AddKudosLog(kudosLog); _kudosLogsDbSet.Received(2).Add(Arg.Any <KudosLog>()); _uow.Received(1).SaveChanges(false); }
private AddKudosDTO MapInitialInfoToDTO(AddKudosLogDTO kudosLog, decimal?overridenPoints = null) { var sendingUser = _usersDbSet.Find(kudosLog.UserId); _kudosServiceValidator.ValidateUser(sendingUser); var kudosType = _kudosTypesDbSet.AsNoTracking().FirstOrDefault(p => p.Id == kudosLog.PointsTypeId); _kudosServiceValidator.ValidateKudosType(kudosType); return(new AddKudosDTO { KudosLog = kudosLog, KudosType = MapKudosTypesToDTO(kudosType), SendingUser = _mapper.Map <ApplicationUserDTO>(sendingUser), TotalKudosPointsInLog = overridenPoints ?? kudosLog.MultiplyBy * kudosType.Value, PictureId = kudosLog.PictureId }); }
public void Should_Return_If_User_Has_No_Available_Kudos() { _kudosTypesDbSet.SetDbSetData(MockKudosTypes()); _kudosLogsDbSet.SetDbSetData(MockKudosLogs()); var kudosLog = new AddKudosLogDTO { OrganizationId = 2, PointsTypeId = 2, UserId = "testUserId2", ReceivingUserIds = new List <string> { "testUserId3", "testUserId4", "testUserId" }, MultiplyBy = 2, Comment = "Comment", IsActive = true }; Assert.Throws <KudosException>(() => _kudosService.AddKudosLog(kudosLog)); }
public async Task AddLotteryKudosLog(AddKudosLogDTO kudosLogDTO, UserAndOrganizationDTO userOrg) { var kudosDto = MapInitialInfoToDTO(kudosLogDTO); var receivingUser = _usersDbSet .FirstOrDefault(x => x.Id == kudosLogDTO.UserId && x.OrganizationId == kudosLogDTO.OrganizationId); if (receivingUser == null) { throw new ValidationException(ErrorCodes.ContentDoesNotExist, "User not found"); } kudosDto.ReceivingUser = receivingUser; InsertKudosLog(kudosDto, KudosStatus.Approved); await _uow.SaveChangesAsync(false); UpdateProfileKudos(kudosDto.SendingUser, userOrg); }
public async Task AddKudosLog_UserIsAdminButTotalPointsIsNull_AddKudosLogWithExplicitAmountIsInvoked() { // Arrange const int explicitAmount = 123456; var request = new AddKudosLogViewModel { TotalPointsPerReceiver = null }; var mappedRequest = new AddKudosLogDTO(); _mapper.Map <AddKudosLogViewModel, AddKudosLogDTO>(request).Returns(mappedRequest); _permissionService.UserHasPermission(Arg.Any <UserAndOrganizationDTO>(), AdministrationPermissions.Kudos) .Returns(true); // Act var result = await _kudosController.AddKudosLog(request).ExecuteAsync(CancellationToken.None); // Assert Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); _kudosService.DidNotReceive().AddKudosLog(mappedRequest, explicitAmount); _kudosService.Received(1).AddKudosLog(mappedRequest); }
public void AddKudosLog_OverridenPointsAmountPassed_SaveTriggeredWithExplicitAmount() { // Arrange var explicitAmount = 1234564; var kudosLog = new AddKudosLogDTO { OrganizationId = 2, PointsTypeId = 2, UserId = "testUserId2", ReceivingUserIds = new List <string>() { "testUserId3", "testUserId4" }, MultiplyBy = 2, Comment = "Comment" }; // Act _kudosService.AddKudosLog(kudosLog, explicitAmount); // Assert _kudosLogsDbSet.Received(4).Add(Arg.Is <KudosLog>(l => l.Points == explicitAmount)); }
public void Should_Return_If_Kudos_Logs_Has_Not_Been_Saved_2() { HttpContext.Current = new HttpContext( new HttpRequest("", "http://shrooms", ""), new HttpResponse(new StringWriter())); var kudosLog = new AddKudosLogDTO { OrganizationId = 2, PointsTypeId = 2, UserId = "testUserId2", ReceivingUserIds = new List <string>() { "testUserId3", "testUserId4" }, MultiplyBy = 2, Comment = "Comment" }; _kudosService.AddKudosLog(kudosLog); _kudosLogsDbSet.Received(4).Add(Arg.Any <KudosLog>()); _uow.Received(1).SaveChanges(false); }
public void AddKudosLog(AddKudosLogDTO kudosDto, decimal points) { AddKudosRequest(kudosDto, points); }
public void AddKudosLog(AddKudosLogDTO kudosLog) { AddKudosRequest(kudosLog); }