public void MakeDonation(KudosBasketDonationDTO donation) { lock (donateLock) { var user = _usersDbSet .First(usr => usr.Id == donation.UserId); var basket = _kudosBasketsDbSet .Include(b => b.KudosLogs) .First(b => b.OrganizationId == donation.OrganizationId); _kudosBasketValidator.CheckIfBasketIsActive(basket); _kudosBasketValidator.CheckIfUserHasEnoughKudos(user.RemainingKudos, donation.DonationAmount); var otherType = _kudosTypesDbSet .First(type => type.Type == ConstBusinessLayer.KudosTypeEnum.Other); var minusType = _kudosTypesDbSet .First(type => type.Type == ConstBusinessLayer.KudosTypeEnum.Minus); var logComment = string.Format(Resources.Widgets.KudosBasket.KudosBasket.KudosBasketDonationComment, basket.Title); var noUser = default(string); var plusLog = CreateKudosLogForBasket(donation, otherType, logComment, user.Id); var minusLog = CreateKudosLogForBasket(donation, minusType, logComment, noUser); _kudosLogsDbSet.Add(minusLog); basket.KudosLogs.Add(plusLog); _uow.SaveChanges(false); _kudosService.UpdateProfileKudos(user, donation); } }
public void Should_Create_Two_Kudos_Logs_On_Donation() { var donationDto = new KudosBasketDonationDTO { DonationAmount = 20, OrganizationId = 2, UserId = "testUserId", Id = 10 }; _kudosBasketService.MakeDonation(donationDto); _kudosLogsDbSet.Received(1).Add(Arg.Any <KudosLog>()); }
public void Should_Recalculate_Donators_Kudos() { var donationDto = new KudosBasketDonationDTO { DonationAmount = 20, OrganizationId = 2, UserId = "testUserId", Id = 10 }; _kudosBasketService.MakeDonation(donationDto); var user = _usersDbSet.First(u => u.Id == "testUserId"); _kudosService.Received(1).UpdateProfileKudos(user, donationDto); }
public void Should_Make_A_Donation() { var donationDto = new KudosBasketDonationDTO { DonationAmount = 20, OrganizationId = 2, UserId = "testUserId", Id = 10 }; _kudosBasketService.MakeDonation(donationDto); var basket = _kudosBasketDbSet.First(b => b.Id == 10); Assert.AreEqual(45, basket.KudosLogs.Sum(l => l.Points)); }
private 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); }