public async Task <bool> DeleteAsync(AuctionDeleteRequestModel request) { ValidateAuctionDelete(request); int loggedInUserId = m_permissionService.GetAndValidateUserId(); return(await m_auctionsRepository.DeleteAsync(request, loggedInUserId).ConfigureAwait(true)); }
public async Task <bool> DeleteAsync(AuctionDeleteRequestModel request, int loggedInUserId) { var strategy = m_context.Database.CreateExecutionStrategy(); await strategy.Execute(async() => { try { using (var transaction = m_context.Database.BeginTransaction()) { foreach (int auctionId in request.AuctionIds) { bool auctionExists = await m_context.Auctions.AnyAsync(auct => auct.AuctionId == auctionId).ConfigureAwait(true); if (auctionExists) { Auction auctionForDelete = await m_context.Auctions .Where(auct => auct.AuctionId == auctionId) .FirstOrDefaultAsync() .ConfigureAwait(true); if (auctionForDelete.AuctionImageContainer.IsSpecified()) { await HandleAuctionDeleteImages(auctionForDelete.AuctionImageContainer).ConfigureAwait(true); } AuctionItem auctionItemDetails = await m_context.AuctionItems .Where(aitem => aitem.AuctionId == auctionId) .FirstOrDefaultAsync() .ConfigureAwait(true); AuctionDetails auctionDetails = await m_context.AuctionDetails .Where(adet => adet.AuctionItemId == auctionItemDetails.AuctionItemId) .FirstOrDefaultAsync() .ConfigureAwait(true); m_context.Remove(auctionDetails); m_context.Remove(auctionItemDetails); m_context.Remove(auctionForDelete); await m_context.SaveChangesAsync().ConfigureAwait(true); } else { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.NotActiveAuction); } } transaction.Commit(); } } catch (Exception ex) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.CouldNotDeleteAuction, ex); } }).ConfigureAwait(true); return(true); }
private void ValidateAuctionDelete(AuctionDeleteRequestModel request) { if (request.IsNotSpecified()) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } if (request.AuctionIds.IsNotSpecified()) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } if (request.AuctionIds.Any(s => s.IsNotSpecified())) { throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation); } }
[HasPermission(Permission.CreateAuction)] // TODO: KKE: Add correct permission! public async Task <IActionResult> Delete([FromBody] AuctionDeleteRequestModel request) { return(Ok(await m_auctionsService.DeleteAsync(request).ConfigureAwait(true))); }