public ActionResult AddAdvertisment(AdvertismentSaveModel advertisment)
        {
            try
            {
                if (advertisment == null)
                {
                    throw new ArgumentNullException(nameof(advertisment));
                }

                _advertismentService.CreateAdvertisment(advertisment);
            }
            catch (ArgumentNullException ex)
            {
                Log.Error(ex, AdvertismentConstants.ARGUMENT_NULL);
                return(StatusCode(400));
            }
            catch (DbUpdateException)
            {
                return(StatusCode(507));
            }
            catch (Exception)
            {
                return(StatusCode(500));
            }

            return(StatusCode(201));
        }
示例#2
0
        /// <summary>
        /// Updates and existing advertisment
        /// </summary>
        /// <param name="saveModel">The save model <seealso cref="AdvertismentSaveModel"/></param>
        public void UpdateAdvertisment(AdvertismentSaveModel saveModel)
        {
            try
            {
                ArgumentsValidator.Validate(nameof(saveModel), saveModel);
                ArgumentsValidator.Validate(nameof(saveModel.AdvertismentName), saveModel.AdvertismentName);

                string requesterId = _userService.GetUserIdForUserNameAsync(saveModel.UserName).Result;

                ArgumentsValidator.Validate(nameof(requesterId), requesterId);

                /**
                 * Check for existing advert name for user requesting operation
                 */

                Advertisment existingAdvertisement = _adverismentRepository.GetAdvertismentByUserAndId(requesterId, saveModel.AdvertismentId.Value);

                if (existingAdvertisement == null)
                {
                    throw new Exception("No advertisement found");
                }

                existingAdvertisement.AdvertismentId          = existingAdvertisement.AdvertismentId;
                existingAdvertisement.AdvertismentName        = saveModel.AdvertismentName;
                existingAdvertisement.AdvertismentDescription = saveModel.Description;
                existingAdvertisement.InitialPrice            = saveModel.InitialPrice;
                existingAdvertisement.IsAuction       = saveModel.IsAuction;
                existingAdvertisement.IsBuyNow        = saveModel.IsBuyNow;
                existingAdvertisement.IsPromoted      = saveModel.IsPromoted;
                existingAdvertisement.BuyNowPrice     = saveModel.BuyNowPrice;
                existingAdvertisement.CurrentPrice    = saveModel.CurrentPrice;
                existingAdvertisement.CreatedDateTime = saveModel.CreatedDateTime;
                existingAdvertisement.CategoryId      = saveModel.CategoryId;
                existingAdvertisement.Status          = saveModel.Status;
                existingAdvertisement.UserId          = requesterId;

                _adverismentRepository.UpdateAdvertisment(existingAdvertisement);
            }
            catch (DbUpdateException ex)
            {
                Log.Warning(ex, AdvertismentConstants.CANNOT_UPDATE_ADVERT);
                throw;
            }
            catch (Exception ex)
            {
                Log.Error(ex, ex.Message);
                throw;
            }
        }
 public ActionResult UpdateAdvertisment(AdvertismentSaveModel advertisment)
 {
     try
     {
         _advertismentService.UpdateAdvertisment(advertisment);
         return(StatusCode(StatusCodes.Status200OK));
     }
     catch (ArgumentNullException ex)
     {
         Log.Error(ex, AdvertismentConstants.ARGUMENT_NULL);
         return(StatusCode(StatusCodes.Status400BadRequest));
     }
     catch (DbUpdateException)
     {
         return(StatusCode(StatusCodes.Status507InsufficientStorage));
     }
     catch (Exception)
     {
         return(StatusCode(StatusCodes.Status500InternalServerError));
     }
 }
示例#4
0
        public void CreateAdvertisment(AdvertismentSaveModel saveModel)
        {
            try
            {
                // check the requester id
                string requesterId = _userService.GetUserIdForUserNameAsync(saveModel.UserName).Result;

                /**
                 * Check for existing advert name for user requesting operation
                 */
                if (requesterId == null ||
                    _adverismentRepository.GetAdvertimentByUserAndName(requesterId, saveModel.AdvertismentName) != null)
                {
                    throw new Exception("You have already added advertisment with such name");
                }

                // translate object
                Advertisment advert = new Advertisment
                {
                    AdvertismentName        = saveModel.AdvertismentName,
                    AdvertismentDescription = saveModel.Description,
                    InitialPrice            = saveModel.InitialPrice,
                    IsAuction       = saveModel.IsAuction,
                    IsBuyNow        = saveModel.IsBuyNow,
                    IsPromoted      = saveModel.IsPromoted,
                    BuyNowPrice     = saveModel.BuyNowPrice,
                    CurrentPrice    = saveModel.CurrentPrice,
                    CreatedDateTime = saveModel.CreatedDateTime,
                    CategoryId      = saveModel.CategoryId,
                    Status          = saveModel.Status,
                    UserId          = requesterId
                };

                // get the created advert id - will be required for saving attached photos
                int id = _adverismentRepository.CreateAdvertisment(advert);

                // check if advertisment contains any photos attached - if nothing found - finish
                if (saveModel.Photos == null || saveModel.Photos.Count <= 0)
                {
                    return;
                }
                List <AdvertPhotos> photos = new List <AdvertPhotos>();

                saveModel.Photos.ForEach(item =>
                {
                    photos.Add(new AdvertPhotos
                    {
                        AdvertismentId = id,
                        ContentLength  = item.ContentLength,
                        ContentType    = item.ContentType,
                        PhotoName      = item.Name,
                        UserId         = requesterId,
                        Content        = ConvertBase64StringToByteArray(item.Src),
                        Advertisment   = advert
                    });
                });

                // save the photos
                _adverismentRepository.SaveAdvertPhotos(photos);
            }
            catch (DbUpdateException ex)
            {
                Log.Warning(ex, AdvertismentConstants.CANNOT_SAVE_ADVERT);
                throw;
            }
            catch (Exception ex)
            {
                Log.Error(ex, ex.Message);
                throw;
            }
        }