Example #1
0
        public async Task <BonusDto> AddBonusAsync(AddBonusDto model, CancellationToken cancellationToken = default)
        {
            if (model is null)
            {
                throw new ArgumentNullException("", Resources.ModelIsNull);
            }

            VendorDto vendorDto = null;

            try
            {
                vendorDto = await _vendorService.GetVendorByIdAsync(model.CompanyId);
            }
            catch
            {
                throw new ArgumentException(Resources.VendorFindbyIdError);
            }
            if (vendorDto == null)
            {
                throw new ArgumentException(Resources.VendorFindbyIdError);
            }

            var bonus = _mapper.Map <Bonus>(model);

            bonus.SetInitialValues();

            await _bonusRepository.AddAsync(bonus, cancellationToken);

            return(_mapper.Map <BonusDto>(bonus));
        }
Example #2
0
        public async Task AddBonus_ShouldReturnServiceAndBonus()
        {
            var controller = new ServiceController(_service);
            var serviceDto = GetServiceDto();
            var service    = (await controller.GetAll(serviceDto.Name))[0];
            var user       = await _context.Users.FirstOrDefaultAsync();

            var bonusDto = new AddBonusDto
            {
                PromoCode = "itpromocodes",
                ServiceId = Guid.Parse(service.Id),
            };

            // mock current user user
            var claims = new ClaimsIdentity(
                new Claim[]
            {
                new Claim(ClaimTypes.Name, user.Id.ToString())
            }
                );

            var claimsPrincipal = new ClaimsPrincipal(claims);
            var httpContext     = new DefaultHttpContext();

            httpContext.User = claimsPrincipal;

            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext
            };

            controller.ControllerContext = controllerContext;

            // Add bonus
            var result = await controller.AddBonus(bonusDto) as OkObjectResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result.Value, typeof(ServiceResponse));
        }
Example #3
0
        public async Task <ServiceResponse> AddBonus(AddBonusDto bonusDto, string userId)
        {
            var service = await _context.Services.FirstOrDefaultAsync(x => x.Id == bonusDto.ServiceId);

            if (service == null)
            {
                return(null);
            }

            var user = await _context.Users.Include(x => x.ServiceBonuses).FirstOrDefaultAsync(x => x.Id == Guid.Parse(userId));

            if (user == null)
            {
                return(null);
            }

            // Bonus already exists for this user
            if (user.ServiceBonuses.Any(x => x.ServiceId == bonusDto.ServiceId))
            {
                throw new Exception("Conflict");
            }

            var bonus = new Bonus
            {
                ServiceId = service.Id,
                UserId    = user.Id
            };

            await _context.ServiceBonuses.AddAsync(bonus);

            await _context.SaveChangesAsync();

            var result = await _context.Services.Include(x => x.UserBonuses).ThenInclude(y => y.User).FirstOrDefaultAsync(x => x.Id == service.Id);

            return(result?.ToDTO());
        }
 public async Task <ActionResult <ResultDto <BonusDto> > > AddBonusAsync([FromBody] AddBonusDto Bonus)
 {
     return(Ok(await _BonusService.AddBonusAsync(Bonus)));
 }
Example #5
0
        public async Task <ActionResult <ResultDto <BonusDto> > > AddBonusAsync([FromBody] AddBonusDto Bonus)
        {
            var userId = User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value;

            return(Ok(await _BonusService.AddBonusAsync(Bonus, Guid.Parse(userId))));
        }