Пример #1
0
        public async Task <ActionResultResponse> Update(string tenantId, string bannerId, BannerMeta bannerMeta)
        {
            var bannerInfo = await _bannerRepository.GetInfo(bannerId);

            if (bannerInfo == null)
            {
                return(new ActionResultResponse(-1, _resourceService.GetString("Banner does not exists.")));
            }

            if (bannerInfo.TenantId != tenantId)
            {
                return(new ActionResultResponse(-2, _sharedResourceService.GetString("You do not have permission to to this action.")));
            }

            if (bannerInfo.ConcurrencyStamp != bannerMeta.ConcurrencyStamp)
            {
                return(new ActionResultResponse(-3, _resourceService.GetString("The Banner already updated by other people. You can not update this Banner.")));
            }

            //if (bannerInfo.Position != bannerMeta.Position)
            //{
            //    var isExistsInPosition = await _bannerRepository.CheckExistsByPosition(tenantId, bannerMeta.Position);
            //    if (isExistsInPosition)
            //        return new ActionResultResponse(-1, _resourceService.GetString("Banner already exists in position"));
            //}

            bannerInfo.LastUpdate       = DateTime.Now;
            bannerInfo.ConcurrencyStamp = Guid.NewGuid().ToString();
            bannerInfo.Name             = bannerMeta.Name;
            bannerInfo.Type             = bannerMeta.Type;
            bannerInfo.Description      = bannerMeta.Description;
            bannerInfo.UnsignName       = bannerMeta.Name.StripVietnameseChars().ToUpper();
            bannerInfo.DisplayType      = bannerMeta.DisplayType;
            bannerInfo.EffectType       = bannerMeta.EffectType;
            bannerInfo.IsActive         = bannerMeta.IsActive;
            bannerInfo.IsPopUp          = bannerMeta.IsPopUp;
            bannerInfo.Position         = bannerMeta.Position;

            var result = await _bannerRepository.Update(bannerInfo);

            if (result < 0)
            {
                return(new ActionResultResponse(result, _sharedResourceService.GetString("Something went wrong. Please contact with administrator.")));
            }

            var listBannerItem = await _bannerItemRepository.GetByBanner(bannerInfo.Id);

            if (listBannerItem != null && listBannerItem.Any())
            {
                foreach (var bannerItem in listBannerItem)
                {
                    var bannerItemExists = bannerMeta.BannerItems.Where(x => x.Id == bannerItem.Id).ToList();
                    if (bannerItemExists == null || bannerItemExists.Count() == 0)
                    {
                        await _bannerItemRepository.ForceDelete(bannerItem.Id);
                    }
                }
            }

            foreach (var bannerItemMeta in bannerMeta.BannerItems)
            {
                var bannerItem = await _bannerItemRepository.GetInfo(bannerItemMeta.Id);

                if (bannerItem != null)
                {
                    bannerItem.Name        = bannerItemMeta.Name;
                    bannerItem.Url         = bannerItemMeta.Url;
                    bannerItem.Image       = bannerItemMeta.Image;
                    bannerItem.Order       = bannerItemMeta.Order;
                    bannerItem.Alt         = bannerItemMeta.Alt;
                    bannerItem.Description = bannerItemMeta.Description;
                    await _bannerItemRepository.Update(bannerItem);
                }
                else
                {
                    bannerItem = new BannerItem()
                    {
                        Id          = Guid.NewGuid().ToString(),
                        BannerId    = bannerId,
                        Name        = bannerItemMeta.Name,
                        Url         = bannerItemMeta.Url,
                        Image       = bannerItemMeta.Image,
                        Order       = bannerItemMeta.Order,
                        Alt         = bannerItemMeta.Alt,
                        Description = bannerItemMeta.Description
                    };

                    await _bannerItemRepository.Insert(bannerItem);
                }
            }

            return(new ActionResultResponse(result, _resourceService.GetString("Update Banner successful.")));
        }