Exemplo n.º 1
0
        public async Task <IActionResult> Edit(BannerEditModel model)
        {
            if (ModelState.IsValid)
            {
                var seller = await HttpContext.GetMemberAsync();

                var banner = await _bannerService.GetAsync(new BannerFilter()
                {
                    SellerId = seller.Id, BannerId = model.Id
                });

                if (banner != null)
                {
                    await _appService.PrepareBannerAsync(banner, model);

                    banner.SellerId = seller.Id;
                    await _bannerService.UpdateAsync(banner);
                    await SaveBannerImage(banner, model);

                    TempData.AddAlert(AlertMode.Notify, AlertType.Success, $"\"{banner.Title}\" banner was updated.");
                }
            }

            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Add(BannerSize size)
        {
            var seller = await HttpContext.GetMemberAsync();

            var model = new BannerEditModel();
            await _appService.PrepareModelAsync(model, null);

            model.Size = size;
            return(View(nameof(Edit), model));
        }
Exemplo n.º 3
0
        public Task PrepareBannerAsync(Banner banner, BannerEditModel model)
        {
            if (banner == null)
            {
                throw new ArgumentNullException(nameof(banner));
            }
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            banner           = _mapper.Map(model, banner);
            banner.Permalink = SanitizerHelper.AppendUrlPath(model.Permalink);

            return(Task.CompletedTask);
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Add(BannerEditModel model, BannerSize size)
        {
            if (ModelState.IsValid)
            {
                var seller = await HttpContext.GetMemberAsync();

                var banner = new Banner();
                await _appService.PrepareBannerAsync(banner, model);

                banner.SellerId = seller.Id;
                await _bannerService.CreateAsync(banner);
                await SaveBannerImage(banner, model);

                TempData.AddAlert(AlertMode.Notify, AlertType.Success, $"\"{banner.Title}\" banner was added.");
            }

            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 5
0
        public Task PrepareModelAsync(BannerEditModel model, Banner banner)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (banner != null)
            {
                model = _mapper.Map(banner, model);
            }
            else
            {
                model.Published = true;
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Edit(long id)
        {
            var seller = await HttpContext.GetMemberAsync();

            var banner = await _bannerService.GetAsync(new BannerFilter()
            {
                SellerId = seller.Id, BannerId = id
            });

            if (banner != null)
            {
                var model = new BannerEditModel();

                await _appService.PrepareModelAsync(model, banner);

                return(View(nameof(Edit), model));
            }

            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 7
0
        public JsonResult SaveEdit(BannerEditModel model)
        {
            SaveResult result = new SaveResult();

            if (model.Id > 0) //编辑
            {
                Banner banner = new Banner
                {
                    Id         = model.Id,
                    AccountId  = AccountInfo.Id,
                    Title      = model.Title,
                    LinkUrl    = model.LinkUrl == null ? "#" : model.LinkUrl,
                    Version    = model.Version == 1 ? BannerVersion.CN : BannerVersion.EN,
                    Status     = BannerStatus.Published,
                    Type       = model.Type == 0 ? BannerType.HomePageBanner : (model.Type == 1 ? BannerType.FiiiEcologyBanner : BannerType.NewsBanner),
                    CreateTime = DateTime.UtcNow,
                    ModifyTime = null,
                    Sort       = model.Sort
                };
                result = _component.UpdateBanner(banner, model.BannerFileUrlList);
            }
            else  //新增
            {
                Banner banner = new Banner
                {
                    AccountId  = AccountInfo.Id,
                    Title      = model.Title,
                    LinkUrl    = model.LinkUrl == null ? "#" : model.LinkUrl,
                    Version    = model.Version == 1 ? BannerVersion.CN : BannerVersion.EN,
                    Status     = BannerStatus.Published,
                    Type       = model.Type == 0 ? BannerType.HomePageBanner : (model.Type == 1 ? BannerType.FiiiEcologyBanner : BannerType.NewsBanner),
                    CreateTime = DateTime.UtcNow,
                    ModifyTime = null,
                    Sort       = model.Sort
                };
                result = _component.InsertBanner(banner, model.BannerFileUrlList);
            }

            return(Json(result.toJson()));
        }
Exemplo n.º 8
0
        private async Task SaveBannerImage(Banner banner, BannerEditModel model)
        {
            var fileClient     = HttpContext.RequestServices.GetRequiredService <IFileClient>();
            var imageProcessor = HttpContext.RequestServices.GetRequiredService <IImageProcessor>();

            await _appService.PrepareMediaAsync(new[] { banner.Image }, new[] { model.Image },
                                                createMedia : async(image) =>
            {
                image.DirectoryName = banner.SellerId.ToString();

                var source = await fileClient.GetAsync(image.DirectoryName, image.FileName);

                if (source != null)
                {
                    var(imageWidth, imageHeight) = await imageProcessor.GetImageSizeAsync(source);

                    image.Width    = imageWidth;
                    image.Height   = imageHeight;
                    image.FileSize = source.Length;

                    await _mediaService.CreateAsync(image);

                    banner.ImageId = image.Id;
                    await _bannerService.UpdateAsync(banner);
                }
            },
                                                updateMedia : async(image) =>
            {
                await _mediaService.UpdateAsync(image);
            },
                                                deleteMedia : async(image) =>
            {
                banner.ImageId = null;
                banner.Image   = null;

                await _bannerService.UpdateAsync(banner);
                await _mediaService.DeleteAsync(image);
            });
        }