public bool UpdateAuctionDetails(AuctionEditRequestModel request)
        {
            ValidateAuctionUpdate(request);

            int loggedInUserId = m_permissionService.GetAndValidateUserId();

            return(m_auctionsRepository.UpdateAuctionDetails(request, loggedInUserId));
        }
        /// <summary>
        /// Validate auction update permissions
        /// </summary>
        /// <param name="request"></param>
        private void ValidateAuctionUpdate(AuctionEditRequestModel request)
        {
            if (request.IsNotSpecified())
            {
                throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation);
            }
            if (request.AuctionId.IsNotSpecified())
            {
                throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.MissingAuctionsInformation);
            }

            // todo: kke: add missing validation checks!
        }
        public bool UpdateAuctionDetails(AuctionEditRequestModel request, int loggedInUserId)
        {
            var strategy = m_context.Database.CreateExecutionStrategy();

            strategy.Execute(() =>
            {
                try
                {
                    using (var transaction = m_context.Database.BeginTransaction())
                    {
                        Auction auctionForUpdate = m_context.Auctions.FirstOrDefault(auct => auct.AuctionId == request.AuctionId);

                        if (auctionForUpdate.IsNotSpecified() == false)
                        {
                            auctionForUpdate.Name          = request.AuctionName;
                            auctionForUpdate.StartingPrice = request.AuctionStartingPrice;
                            auctionForUpdate.StartDate     = request.AuctionStartDate;
                            auctionForUpdate.ApplyTillDate = request.AuctionApplyTillDate;
                            auctionForUpdate.EndDate       = request.AuctionEndDate;
                            // todo: kke: add missing status change here!

                            m_context.SaveChanges();
                            transaction.Commit();
                        }
                        else
                        {
                            throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.CouldNotUpdateAuction);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new WebApiException(HttpStatusCode.BadRequest, AuctionErrorMessages.CouldNotUpdateAuction, ex);
                }
            });

            return(true);
        }
 [HasPermission(Permission.CreateAuction)] // TODO: KKE: Add correct permission!
 public IActionResult Edit([FromBody] AuctionEditRequestModel request)
 {
     return(Ok(m_auctionsService.UpdateAuctionDetails(request)));
 }