Example #1
0
        public Good SaveGood(Good good, Company company, ICollection <IFormFile> newimages)
        {
            if (good.Id != 0)//если изменение позиции
            {
                _ctx.Entry(good).State = EntityState.Modified;
                _ctx.SaveChanges();
            }
            else            //если новая позиция
            {
                _ctx.Goods.Add(good);
                _ctx.SaveChanges();

                //теперь создаем обхъкт связку товар - магазин
                RelCompanyGood rsg = new RelCompanyGood()
                {
                    Good = good, GoodId = good.Id, Company = company, CompanyId = company.Id
                };
                //добавляем объект связку в товар
                good.Companies.Add(rsg);
            }
            //удаляем

            //сначала добавляем картинки в бд и тут же в коллекцию изображений товара
            foreach (IFormFile im in newimages)
            {
                Image newim = new Image {
                    Id            = 0,
                    IsMain        = true,
                    Description   = "",
                    ImageMimeType = im.ContentType,
                    GoodId        = good.Id
                };

                using (var reader = new StreamReader(im.OpenReadStream()))
                {
                    Stream stream  = reader.BaseStream;
                    Byte[] inArray = new Byte[(int)stream.Length];
                    stream.Read(inArray, 0, (int)stream.Length);

                    newim.ImageContent = inArray;
                }
                //*картинки в бд
                _repositoryImage.SaveImage(newim);

                //*тут же в коллекцию изображений товара
                good.Images.Clear();
                good.Images.Add(newim);
            }

            //созраняемся
            _ctx.Entry(good).State = EntityState.Modified;
            _ctx.SaveChanges();

            return(good);
        }
Example #2
0
        public Article SaveArticle(Article good, Company company)
        {
            //Редактирование СУЩЕСТВУЮЩЕЙ позиции (дата UpdateStatus не меняется - она меняется только из списка неактивных товаров)
            if (good.Id != 0)
            {
                var dbEntry = _ctx.Articles.Where(g => g.Id == good.Id)
                              .Include(g => g.Category)
                              .Include(g => g.Category.ParentCategory)
                              .Include(g => g.Images)
                              .AsNoTracking()
                              .SingleOrDefault();

                if (dbEntry != null)
                {
                    dbEntry.CategoryType    = good.CategoryType;
                    dbEntry.Title           = good.Title;
                    dbEntry.EnTitle         = good.EnTitle;
                    dbEntry.Description     = good.Description;
                    dbEntry.CategoryId      = good.CategoryId;
                    dbEntry.Link            = good.Link;
                    dbEntry.HashTags        = good.HashTags;
                    dbEntry.UpdateTime      = DateTime.Now;
                    dbEntry.metaDescription = good.metaDescription;
                    dbEntry.metaKeyWords    = good.metaKeyWords;
                }

                _ctx.Entry(dbEntry).State = EntityState.Modified;
                _ctx.SaveChanges();
            }
            //Добавление НОВОЙ позиции (в т.ч. дата UpdateStatus выставляется на текущий день - берется из параметра - good)
            else
            {
                good.CategoryType = good.CategoryType;
                _ctx.Articles.Add(good);
                _ctx.SaveChanges();

                //теперь создаем обхъкт связку товар - магазин
                RelCompanyGood rsg = new RelCompanyGood()
                {
                    Good = good, GoodId = good.Id, Company = company, CompanyId = company.Id
                };
                //добавляем объект связку в товар
                good.Companies.Add(rsg);

                _ctx.Entry(good).State = EntityState.Modified;
                _ctx.SaveChanges();
            }
            return(good);
        }