예제 #1
0
 private void EntityFormMap(string[] array, AdEditModel entity)
 {
     if (array != null)
     {
         foreach (var byteStream in array)
         {
             byte[] byteArray = System.Convert.FromBase64String(byteStream);
             using (MemoryStream stream = new MemoryStream(byteArray))
                 entity.FilesAsListOfByteArray.Add(stream.ToArray());
         }
     }
 }
예제 #2
0
 private void MapFiles(AdEditModel entity)
 {
     if (entity.Files != null)
     {
         foreach (var file in entity.Files)
         {
             using (var memoryStream = new MemoryStream())
             {
                 file.CopyTo(memoryStream);
                 entity.FilesAsListOfByteArray.Add(memoryStream.ToArray());
             }
         }
     }
 }
예제 #3
0
        public AdEditModel GetEditViewModel(AdViewModel viewModel, string userId)
        {
            if (viewModel.AuthorId == userId)
            {
                var editModel = new AdEditModel
                {
                    Id       = viewModel.Id,
                    Title    = viewModel.Title,
                    Content  = viewModel.Content,
                    Category = viewModel.Category,
                    ImageUrl = viewModel.ImageUrl
                };

                return(editModel);
            }

            return(null);
        }
예제 #4
0
        public static AdEditModel MapToAdEditModel(Ad entity)
        {
            var editModel = new AdEditModel();

            var mainPicture = entity.AdDetail?.MainPictureThumbnailFile;
            var description = entity.AdDetail?.Description;

            editModel.ID         = entity.ID;
            editModel.Name       = entity.Name;
            editModel.OwnerId    = entity.OwnerId;
            editModel.Price      = entity.Price;
            editModel.CategoryId = entity.CategoryID;
            editModel.CityId     = entity.CityID;
            editModel.AdDetail.AdDetailPictures = entity.AdDetail?.AdDetailPictures;
            editModel.MainPictureThumbnail      = mainPicture;
            editModel.Description = description;

            return(editModel);
        }
예제 #5
0
        public static Ad MapAdFromAdEditModel(AdEditModel entity, Ad existingAd)
        {
            List <AdDetailPicture> pictures = new List <AdDetailPicture>();

            if (entity.FilesAsListOfByteArray != null && entity.FilesAsListOfByteArray.Count > 0)
            {
                foreach (var file in entity.FilesAsListOfByteArray)
                {
                    pictures.Add(new AdDetailPicture
                    {
                        File       = file,
                        CreatedBy  = entity.CreatedBy,
                        CreatedAt  = entity.CreatedAt,
                        ModifiedAt = entity.ModifiedAt,
                        ModifiedBy = entity.ModifiedBy,
                    });
                }
            }

            existingAd.OwnerId    = entity.OwnerId;
            existingAd.CityID     = entity.CityId;
            existingAd.CategoryID = entity.CategoryId;

            existingAd.ModifiedAt = entity.ModifiedAt;
            existingAd.ModifiedBy = entity.ModifiedBy;

            existingAd.Price      = entity.Price;
            existingAd.Name       = entity.Name;
            existingAd.ModifiedAt = entity.ModifiedAt;
            existingAd.ModifiedBy = entity.ModifiedBy;

            existingAd.AdDetail.ModifiedAt               = entity.ModifiedAt;
            existingAd.AdDetail.ModifiedBy               = entity.ModifiedBy;
            existingAd.AdDetail.AdDetailPictures         = pictures;
            existingAd.AdDetail.MainPictureThumbnailFile = entity.MainPictureThumbnail;
            existingAd.AdDetail.Description              = entity.Description;

            return(existingAd);
        }
예제 #6
0
        public bool Update(AdEditModel entity)
        {
            Ad ad = _repository.GetAdWithDetails(entity.ID);

            if (ad == null)
            {
                throw new Exception(LOCALIZATION_GENERAL_NOT_FOUND + entity.ID);
            }

            if (entity.AdDetail != null && entity.AdDetail.AdDetailPictures != null)
            {
                foreach (var adDetailMap in entity.AdDetail.AdDetailPictures)
                {
                    ad.AdDetail.AdDetailPictures.Remove(adDetailMap);
                }
            }

            entity.MainPictureThumbnail = MagiskImageWrapper.MakeThumbnailImage(System.Convert.FromBase64String(entity.MainPictureFile));
            ad = AdMapper.MapAdFromAdEditModel(entity, ad);

            return(_repository.Update(ad));
        }
예제 #7
0
        public int Update(AdEditModel editModel, string userId)
        {
            var ad = this.DbContext
                     .Ads
                     .Where(a => a.Id == editModel.Id && a.AuthorId == userId)
                     .FirstOrDefault();

            ad.Title           = editModel.Title;
            ad.Content         = editModel.Content;
            ad.Category        = editModel.Category;
            ad.CreatedOn       = DateTime.UtcNow;
            ad.RejectMessage   = string.Empty;
            ad.ExpirationAfter = (Expiration)editModel.ExpirationAfter;
            if (editModel.Image != null)
            {
                ad.ImageUrl = UploadImage(editModel.Image);
            }
            ad.Status = Status.PendingApproval;

            this.DbContext.SaveChanges();

            return(ad.Id);
        }
예제 #8
0
        public IActionResult Edit([FromForm] AdEditModel entity)
        {
            if (ModelState.IsValid)
            {
                string currentUser = HttpContext?.User?.Identity?.Name;
                if (!String.IsNullOrEmpty(currentUser))
                {
                    AuditedEntityMapper <AdEditModel> .FillModifyAuditedEntityFields(entity, currentUser);

                    entity.OwnerId = CurrentUserId;

                    #region File Map
                    //need to map files in controller because aspnet core assembly is present in adsite project
                    string[] result;
                    if (!String.IsNullOrEmpty(entity.SerializedAdDetailsPictures))
                    {
                        result = Newtonsoft.Json.JsonConvert.DeserializeObject <string[]>(entity.SerializedAdDetailsPictures);
                        entity.MainPictureFile = StripComments(entity.MainPictureFile);
                        entity.MainPictureFile = Newtonsoft.Json.JsonConvert.DeserializeObject <string>(entity.MainPictureFile);
                        EntityFormMap(result, entity);
                    }
                    else
                    {
                        MapFiles(entity);
                    }
                    //
                    #endregion

                    try
                    {
                        _adService.Update(entity);
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        if (!AdExists(entity.ID))
                        {
                            _logger.LogError(LOCALIZATION_ERROR_NOT_FOUND);
                            return(NotFound().WithError(LOCALIZATION_ERROR_NOT_FOUND));
                        }
                        else
                        {
                            _logger.LogError(LOCALIZATION_ERROR_CONCURENT_EDIT);
                            return(NotFound().WithError(LOCALIZATION_ERROR_CONCURENT_EDIT));
                        }
                    }

                    return(RedirectToAction(nameof(MyAds)).WithSuccess(LOCALIZATION_SUCCESS_DEFAULT));
                }
                else
                {
                    _logger.LogError(LOCALIZATION_ERROR_USER_MUST_LOGIN);
                    return(NotFound().WithError(LOCALIZATION_ERROR_USER_MUST_LOGIN));
                }
            }


            ViewBag.Cities     = _cityService.GetAllAsLookup(CountryId);
            ViewBag.Categories = _categoryService.GetAllAsLookup(CountryId);

            #region Preserve pictures if model validation fails
            string serializedString            = String.Empty;
            string mainPictureSerializedString = string.Empty;
            if (entity.Files != null && entity.Files.Count() > 0)
            {
                MapFiles(entity);
                serializedString            = Newtonsoft.Json.JsonConvert.SerializeObject(entity.FilesAsListOfByteArray);
                mainPictureSerializedString = Newtonsoft.Json.JsonConvert.SerializeObject(entity.FilesAsListOfByteArray.First());
            }
            if (!String.IsNullOrEmpty(entity.SerializedAdDetailsPictures))
            {
                string[] convertResult = Newtonsoft.Json.JsonConvert.DeserializeObject <string[]>(entity.SerializedAdDetailsPictures);
                EntityFormMap(convertResult, entity);
                serializedString            = Newtonsoft.Json.JsonConvert.SerializeObject(entity.FilesAsListOfByteArray);
                mainPictureSerializedString = Newtonsoft.Json.JsonConvert.SerializeObject(entity.FilesAsListOfByteArray.First());
            }

            ViewBag.SerializedPictures          = serializedString;
            ViewBag.MainPictureSerializedString = mainPictureSerializedString;
            #endregion


            return(View(entity).WithWarning(LOCALIZATION_WARNING_INVALID_MODELSTATE));
        }
예제 #9
0
        public IActionResult Save(AdEditModel editModel)
        {
            var adId = this.adsService.Update(editModel, CurrentUser.Id);

            return(this.RedirectToAction("Details", new { id = adId }));
        }