public IActionResult Edit(SourceCreateViewModel model, string authors)
        {
            Source source = _db.Sources.FirstOrDefault(b => b.Id == model.SourceId);

            if (model != null)
            {
                source.Name                  = model.Name;
                source.ISBN                  = model.ISBN;
                source.Edition               = model.Edition;
                source.YearOfWriting         = model.YearOfWriting;
                source.SourceDescription     = model.SourceDescription;
                source.Keys                  = model.Keys;
                source.PhysicalPath          = model.PhysicalPath;
                source.AdditionalInformation = model.AdditionalInformation;
                source.DateUpdate            = DateTime.Now;
                source.SourceTypeId          = model.SourceTypeId;
                source.SourceStateId         = model.SourceStateId;
                source.CategoryId            = model.CategoryId;
                _db.Sources.Update(source);
                _db.SaveChanges();
                if (authors != null)
                {
                    SaveSourceAuthors(authors, source);
                }
                if (model.BusinessProcesses != null)
                {
                    SaveBusinessProcessesSource(model, source);
                }
                return(Json(true));
            }
            return(Json("falseData"));
        }
 public void SaveBusinessProcessesSource(SourceCreateViewModel model, Source source)
 {
     string[] businessProcesses = model.BusinessProcesses.Split(',');
     foreach (var businessProcess in businessProcesses)
     {
         if (businessProcess != "")
         {
             var process = _db.BusinessProcesses.FirstOrDefault(b => b.Name == businessProcess);
             if (process != null)
             {
                 SourceBusinessProcess check =
                     _db.SourceBusinessProcesses.FirstOrDefault(s =>
                                                                s.SourceId == source.Id && s.BusinessProcessId == process.Id);
                 if (check == null)
                 {
                     SourceBusinessProcess sourceBusinessProcess = new SourceBusinessProcess()
                     {
                         SourceId          = source.Id,
                         BusinessProcessId = process.Id
                     };
                     _db.SourceBusinessProcesses.Add(sourceBusinessProcess);
                     _db.SaveChanges();
                 }
             }
         }
     }
 }
        public void SaveBookIdAndEnglishBookId(SourceCreateViewModel model, Source source)
        {
            SourceIdAndEnglishSourceId sourceIdAndEnglishSourceId = new SourceIdAndEnglishSourceId()
            {
                SourceId        = model.SourceId,
                EnglishSourceId = source.Id
            };

            _db.SourceIdAndEnglishSourceIds.Add(sourceIdAndEnglishSourceId);
            _db.SaveChanges();
        }
        public IActionResult Create(int sourceId)
        {
            SourceCreateViewModel model = new SourceCreateViewModel
            {
                AllAuthors            = _db.Authors.Where(c => c.Active).ToList(),
                BusinessProcessesList = _db.BusinessProcesses.ToList(),
                SourceId = sourceId
            };

            ViewBag.SourceFormatAvailable =
                "Документы: pdf, doc, docx, txt, xls, xlsx\r\n" +
                "Видео: mp4, avi, mpeg, quicktime\r\n" +
                "Аудио: mp3, amr, ogg\r\nИзображения: jpg, gif, png, bmp\r\n" +
                "Все другие форматы загружать в архивах zip, 7z, rar";
            ViewBag.CoverFormatAvailable = "Разрешено загрузить jpeg(jpg), gif, png, bmp";
            return(View(model));
        }
        public IActionResult Edit(int id)
        {
            Source source = _db.Sources.FirstOrDefault(b => b.Id == id);
            SourceCreateViewModel model = new SourceCreateViewModel
            {
                Name                   = source.Name,
                ISBN                   = source.ISBN,
                Edition                = source.Edition,
                YearOfWriting          = source.YearOfWriting,
                SourceDescription      = source.SourceDescription,
                Keys                   = source.Keys,
                PhysicalPath           = source.PhysicalPath,
                AdditionalInformation  = source.AdditionalInformation,
                AllAuthorsOfThisSourse =
                    _db.SourceAuthors.Where(c => c.SourceId == source.Id).Select(s => s.Author).ToList(),
                AllAuthors                        = _db.Authors.Where(a => a.Active).ToList(),
                BusinessProcessesList             = _db.BusinessProcesses.ToList(),
                BusinessProcessesListOfThisSourse = _db.SourceBusinessProcesses.Where(s => s.SourceId == source.Id)
                                                    .Select(s => s.BusinessProcess).ToList(),
                SourceId = id
            };

            return(View(model));
        }
        public async Task <IActionResult> Create(SourceCreateViewModel model, string authors, IFormFile coverFile,
                                                 IFormFile sourceFile)
        {
            if (model.Name != null && sourceFile != null)
            {
                Source source = new Source
                {
                    SourceTypeId          = model.SourceTypeId,
                    SourceStateId         = model.SourceStateId,
                    CategoryId            = model.CategoryId,
                    Name                  = model.Name,
                    SourceDescription     = model.SourceDescription,
                    AdditionalInformation = model.AdditionalInformation,
                    ISBN                  = model.ISBN,
                    Edition               = model.Edition,
                    PhysicalPath          = model.PhysicalPath,
                    YearOfWriting         = model.YearOfWriting,
                    Keys                  = model.Keys
                };
                if (coverFile != null)
                {
                    if (FileTypeChecker.IsValidImage(coverFile))
                    {
                        source.CoverPath = Load(model.Name, coverFile);
                    }
                    else
                    {
                        return(Json("falseCoverType"));
                    }
                }
                else
                {
                    source.CoverPath = "Files/Cover_missing.png";
                }

                if (FileTypeChecker.IsValidDocument(sourceFile) ||
                    FileTypeChecker.IsValidImage(sourceFile) ||
                    FileTypeChecker.IsValidVideo(sourceFile) ||
                    FileTypeChecker.IsValidAudio(sourceFile))
                {
                    source.VirtualPath = Load(model.Name, sourceFile);
                }
                else
                {
                    return(Json("falseBookType"));
                }

                await _db.Sources.AddAsync(source);

                await _db.SaveChangesAsync();

                if (authors != null)
                {
                    SaveSourceAuthors(authors, source);
                }
                if (model.BusinessProcesses != null)
                {
                    SaveBusinessProcessesSource(model, source);
                }
                if (model.SourceId != 0)
                {
                    SaveBookIdAndEnglishBookId(model, source);
                }
                return(Json(true));
            }

            return(Json("falseData"));
        }