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)); }
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)); }
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))); }
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)))); }