Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        public void AddKudosLog(AddKudosLogDTO kudosDto, decimal?points = null)
        {
            if (!UserHasPermission(kudosDto))
            {
                throw new ValidationException(ErrorCodes.KudosTypeNotFound);
            }

            AddKudosRequest(kudosDto, points);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        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));
        }
Esempio n. 9
0
        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));
        }
Esempio n. 10
0
        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
            });
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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
            });
        }
Esempio n. 13
0
        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));
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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));
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
 public void AddKudosLog(AddKudosLogDTO kudosDto, decimal points)
 {
     AddKudosRequest(kudosDto, points);
 }
Esempio n. 19
0
 public void AddKudosLog(AddKudosLogDTO kudosLog)
 {
     AddKudosRequest(kudosLog);
 }