public async Task <Unit> Handle(RemoveOfferCommand request, CancellationToken cancellationToken) { var userId = HttpContextAccessor.HttpContext?.User.FindFirstValue(ClaimTypes.NameIdentifier); BaseUser user = _context.BaseUsers.Include(u => u.Offers).FirstOrDefault(u => u.Id == userId); if (user == null) { throw new CustomException(new Error { ErrorType = ErrorType.Unauthorized, Message = Localizer["Unauthorized"] }); } Domain.Models.Offer offer = await _context.Offers.Include(o => o.Avatar). FirstOrDefaultAsync(o => o.OfferId == request.OfferId, cancellationToken); if (!user.Offers.Contains(offer)) { throw new CustomException(new Error { ErrorType = ErrorType.Unauthorized, Message = Localizer["Unauthorized"] }); } //TODO check if this offer blongs to user _context.Offers.Remove(offer); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <CreateOfferViewModel> Handle(CreateOfferCommand request, CancellationToken cancellationToken) { var userId = HttpContextAccessor.HttpContext?.User.FindFirstValue(ClaimTypes.NameIdentifier); BaseUser user = _context.BaseUsers.FirstOrDefault(u => u.Id == userId); if (user == null) { throw new CustomException(new Error { ErrorType = ErrorType.Unauthorized, Message = Localizer["Unauthorized"] }); } var avatarObj = await _context.Files.FirstOrDefaultAsync(a => a.Id == request.AvatarId, cancellationToken); if (avatarObj == null) { throw new CustomException(new Error { ErrorType = ErrorType.FileNotFound, Message = Localizer["FileNotFound"] }); } Domain.Models.Offer offer = new Domain.Models.Offer { Title = request.Title, Description = request.Description, Price = request.Price, OfferType = request.OfferType, BaseUser = user, UserId = user.Id, Avatar = avatarObj, AvatarId = request.AvatarId }; await _context.Offers.AddAsync(offer, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(new CreateOfferViewModel { Offer = _mapper.Map <OfferDto>(offer) }); }