Esempio n. 1
0
        /// <summary>
        /// Загружает файл монографии (с заменой ранее загруженного)
        /// </summary>
        /// <param name="patent"></param>
        /// <param name="uploadedFile"></param>
        /// <returns></returns>
        public async Task <FileModel> UploadMonografAsync(Monograf monograf, IFormFile uploadFile)
        {
            if (monograf == null || uploadFile == null)
            {
                return(null);
            }

            FileModel newFileModel = await UploadFileAsync(uploadFile, "Монография", FileDataTypeEnum.Monografiya);

            if (newFileModel != null)
            {
                int?existingFileModelId = monograf.FileModelId;
                monograf.FileModelId = newFileModel.Id;
                monograf.FileModel   = newFileModel;
                await _context.SaveChangesAsync();

                // Проверка наличия ранее загруженного файла
                if (existingFileModelId > 0)
                {
                    await RemoveFileAsync(existingFileModelId);

                    await _context.SaveChangesAsync();
                }
            }
            else
            {
                return(null);
            }

            return(monograf.FileModel);
        }
        /// <summary>
        /// Обновляет монографию пользователя userName
        /// </summary>
        /// <param name="monografEntry"></param>
        /// <param name="monograf"></param>
        public void UpdateMonograf(Monograf monografEntry, Monograf monograf)
        {
            monografEntry.MonografName = monograf.MonografName;
            monografEntry.FileModelId  = monograf.FileModelId;
            monografEntry.YearId       = monograf.YearId;
            monografEntry.RowStatusId  = monograf.RowStatusId;
            ////////
            /// + списки направлений, авторов и пр.
            if (monograf.MonografNirSpecials != null && monograf.MonografNirSpecials.Count > 0)
            {
                foreach (var monografNirSpecial in monograf.MonografNirSpecials)
                {
                    bool isExists = false;
                    foreach (var monografNirSpecialEntry in monografEntry.MonografNirSpecials)
                    {
                        if (monografNirSpecialEntry.NirSpecialId == monografNirSpecial.NirSpecialId)
                        {
                            isExists = true;
                        }
                    }
                    if (!isExists)
                    {
                        monografEntry.MonografNirSpecials.Add(monografNirSpecial);
                    }
                }
            }

            if (monograf.MonografAuthors != null && monograf.MonografAuthors.Count > 0)
            {
                foreach (var monografAuthor in monograf.MonografAuthors)
                {
                    bool isExists = false;
                    foreach (var monografAuthorEntry in monografEntry.MonografAuthors)
                    {
                        if (monografAuthorEntry.MonografAuthorId == monografAuthor.MonografAuthorId)
                        {
                            isExists = true;
                        }
                    }
                    if (!isExists)
                    {
                        monografEntry.MonografAuthors.Add(monografAuthor);
                    }
                }

                decimal firstAuthorPart = 1;
                for (int i = 1; i < monografEntry.MonografAuthors.Count; i++)
                {
                    firstAuthorPart -= monografEntry.MonografAuthors[i].AuthorPart;
                }

                if (firstAuthorPart < 0)
                {
                    firstAuthorPart = 0;
                }
                monografEntry.MonografAuthors[0].AuthorPart = firstAuthorPart;
            }

            _context.SaveChanges();
        }
Esempio n. 3
0
        public IActionResult DeleteMonografConfirmed(Monograf monograf)
        {
            if (monograf == null)
            {
                return(NotFound());
            }
            var monografEntry = _userProfileRepository.RemoveMonograf(monograf.MonografId, User.Identity.Name);

            return(RedirectToAction("Monografs"));
        }
        /// <summary>
        /// Возвращает монографию пользователя userName
        /// </summary>
        /// <param name="id"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public Monograf GetMonograf(int?id, string userName)
        {
            Monograf monograf = new Monograf();

            if (id == null)
            {
                return(monograf);
            }

            List <Monograf> userMonografs = GetMonografs(userName);

            monograf = userMonografs.SingleOrDefault(a => a.MonografId == id);
            return(monograf);
        }
Esempio n. 5
0
        public IActionResult CreateOrEditMonograf(int?id)
        {
            Monograf monograf = _userProfileRepository.GetMonograf(id, User.Identity.Name);

            if (monograf == null)
            {
                return(NotFound());
            }

            ViewBag.Authors     = _selectListRepository.GetSelectListAuthors();
            ViewBag.Years       = _selectListRepository.GetSelectListYears(monograf.YearId);
            ViewBag.NirSpecials = _selectListRepository.GetSelectListNirSpecials();
            ViewBag.NirTemas    = _selectListRepository.GetSelectListNirTemas();
            return(View(monograf));
        }
        // GET: Monografs/CreateOrEdit
        public IActionResult CreateOrEdit(int?id)
        {
            Monograf monograf = _monografRepository.GetMonograf(id);

            if (monograf == null)
            {
                return(NotFound());
            }

            ViewBag.Authors     = _selectListRepository.GetSelectListAuthors();
            ViewBag.Years       = _selectListRepository.GetSelectListYears(monograf.YearId);
            ViewBag.NirSpecials = _selectListRepository.GetSelectListNirSpecials();
            ViewBag.NirTemas    = _selectListRepository.GetSelectListNirTemas();


            //ViewData["FileModelId"] = new SelectList(_context.Files, "Id", "Name");
            //ViewData["RowStatusId"] = new SelectList(_context.RowStatuses, "RowStatusId", "RowStatusName");
            //ViewData["YearId"] = new SelectList(_context.Years, "YearId", "YearName");

            return(View(monograf));
        }
        /// <summary>
        /// Добавляет статью пользователя userName
        /// </summary>
        /// <param name="monograf"></param>
        /// <param name="userName"></param>
        public void CreateMonograf(Monograf monograf, string userName)
        {
            if (monograf.MonografId != 0)
            {
                return;
            }

            AppUser appUser = GetAppUser(userName);
            Author  author  = appUser.Author.FirstOrDefault();

            if (author == null)
            {
                author = new Author
                {
                    AppUserId  = appUser.Id,
                    AuthorName = appUser.GetFullName
                };
                _context.Author.Add(author);
                //_context.SaveChanges();
            }
            if (author.AuthorId == 0)
            {
                return;
            }

            _context.Monografs.Add(monograf);

            MonografAuthor monografAuthor = new MonografAuthor
            {
                MonografId = monograf.MonografId,
                AuthorId   = author.AuthorId,
                AuthorPart = 1
            };

            _context.MonografAuthors.Add(monografAuthor);
            _context.SaveChanges();
        }
Esempio n. 8
0
        public async Task <IActionResult> CreateOrEditMonograf(Monograf monograf,
                                                               string AuthorFilter,
                                                               int AuthorIdAdd, int AuthorIdRemove, decimal AuthorPart,
                                                               int NirSpecialIdAdd, int NirSpecialIdRemove,
                                                               int NirTemaIdAdd, int NirTemaIdRemove,
                                                               CreateOrEditNirDataModeEnum mode, IFormFile uploadedFile)
        {
            Monograf monografEntry = _userProfileRepository.GetMonograf(monograf.MonografId, User.Identity.Name);

            if (monografEntry == null)
            {
                if (uploadedFile != null)
                {
                    FileModel f = await _fileModelRepository.UploadMonografAsync(monograf, uploadedFile);
                }
                _userProfileRepository.CreateMonograf(monograf, User.Identity.Name);
                monografEntry = monograf;
            }
            else
            {
                if (uploadedFile != null)
                {
                    FileModel f = await _fileModelRepository.UploadMonografAsync(monografEntry, uploadedFile);

                    monograf.FileModelId = monografEntry.FileModelId;
                }
                monograf.MonografNirSpecials = monografEntry.MonografNirSpecials;
                monograf.MonografAuthors     = monografEntry.MonografAuthors;
                monograf.MonografNirTemas    = monografEntry.MonografNirTemas;
                _userProfileRepository.UpdateMonograf(monografEntry, monograf);
            }

            switch (mode)
            {
            case CreateOrEditNirDataModeEnum.Saving:
                monograf.RowStatusId = (int)RowStatusEnum.NotConfirmed;
                _userProfileRepository.UpdateMonograf(monografEntry, monograf);
                return(RedirectToAction("Monografs"));

            case CreateOrEditNirDataModeEnum.Canceling:
                if (monograf.RowStatusId == null)
                {
                    _userProfileRepository.RemoveMonograf(monografEntry.MonografId, User.Identity.Name);
                }
                return(RedirectToAction("Monografs"));

            case CreateOrEditNirDataModeEnum.AddingAuthor:
                if (AuthorIdAdd != 0)
                {
                    var isExists = monograf.MonografAuthors.FirstOrDefault(a => a.AuthorId == AuthorIdAdd) != null;
                    if (!isExists)
                    {
                        monograf.MonografAuthors.Add(new MonografAuthor
                        {
                            AuthorId   = AuthorIdAdd,
                            AuthorPart = AuthorPart
                        });
                        _userProfileRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.EditingAuthor:
                break;

            case CreateOrEditNirDataModeEnum.RemovingAuthor:
                if (AuthorIdRemove != 0)
                {
                    var monografAuthorsToRemove = monograf.MonografAuthors.FirstOrDefault(aa => aa.AuthorId == AuthorIdRemove);
                    if (monografAuthorsToRemove != null)
                    {
                        monograf.MonografAuthors.Remove(monografAuthorsToRemove);
                        _userProfileRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.ApplyAuthorFilter:
                break;

            case CreateOrEditNirDataModeEnum.AddingNirSpecial:
                if (NirSpecialIdAdd != 0)
                {
                    var isExists = monograf.MonografNirSpecials.FirstOrDefault(s => s.NirSpecialId == NirSpecialIdAdd) != null;
                    if (!isExists)
                    {
                        monograf.MonografNirSpecials.Add(new MonografNirSpecial {
                            NirSpecialId = NirSpecialIdAdd
                        });
                        _userProfileRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.EditingNirSpecial:
                break;

            case CreateOrEditNirDataModeEnum.RemovingNirSpecial:
                if (NirSpecialIdRemove != 0)
                {
                    var monografToRemove = monograf.MonografNirSpecials.FirstOrDefault(s => s.NirSpecialId == NirSpecialIdRemove);
                    if (monografToRemove != null)
                    {
                        monograf.MonografNirSpecials.Remove(monografToRemove);
                        _userProfileRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.AddingNirTema:
                if (NirTemaIdAdd != 0)
                {
                    var isExists = monograf.MonografNirTemas.FirstOrDefault(s => s.NirTemaId == NirTemaIdAdd) != null;
                    if (!isExists)
                    {
                        monograf.MonografNirTemas.Add(new MonografNirTema {
                            NirTemaId = NirTemaIdAdd
                        });
                        _userProfileRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.EditingNirTema:
                break;

            case CreateOrEditNirDataModeEnum.RemovingNirTema:
                if (NirTemaIdRemove != 0)
                {
                    var monografToRemove = monograf.MonografNirTemas.FirstOrDefault(s => s.NirTemaId == NirTemaIdRemove);
                    if (monografToRemove != null)
                    {
                        monograf.MonografNirTemas.Remove(monografToRemove);
                        _userProfileRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            default:
                break;
            }

            ViewBag.AuthorFilter = AuthorFilter;
            ViewBag.Authors      = _selectListRepository.GetSelectListAuthors(AuthorFilter);
            ViewBag.Years        = _selectListRepository.GetSelectListYears(monograf.YearId);
            ViewBag.NirSpecials  = _selectListRepository.GetSelectListNirSpecials();
            ViewBag.NirTemas     = _selectListRepository.GetSelectListNirTemas();

            return(View(monografEntry));
        }
        public async Task <IActionResult> CreateOrEdit(Monograf monograf,
                                                       string AuthorFilter,
                                                       int AuthorIdAdd, int AuthorIdRemove, decimal AuthorPart,
                                                       int NirSpecialIdAdd, int NirSpecialIdRemove,
                                                       int NirTemaIdAdd, int NirTemaIdRemove,
                                                       CreateOrEditNirDataModeEnum mode,
                                                       IFormFile uploadedFile)
        {
            Monograf monografEntry = _monografRepository.GetMonograf(monograf.MonografId);

            if (monografEntry == null)
            {
                if (uploadedFile != null)
                {
                    FileModel f = await _fileModelRepository.UploadMonografAsync(monograf, uploadedFile);
                }
                _monografRepository.AddMonograf(monograf);
                monografEntry = monograf;
            }
            else
            {
                if (uploadedFile != null)
                {
                    FileModel f = await _fileModelRepository.UploadMonografAsync(monografEntry, uploadedFile);

                    monograf.FileModelId = monografEntry.FileModelId;
                }
                monograf.MonografNirSpecials = monografEntry.MonografNirSpecials;
                monograf.MonografAuthors     = monografEntry.MonografAuthors;
                monograf.MonografNirTemas    = monografEntry.MonografNirTemas;
                _monografRepository.UpdateMonograf(monografEntry, monograf);
            }

            switch (mode)
            {
            case CreateOrEditNirDataModeEnum.Saving:
                monograf.RowStatusId = (int)RowStatusEnum.NotConfirmed;
                _monografRepository.UpdateMonograf(monografEntry, monograf);
                return(RedirectToAction(nameof(Index)));

            case CreateOrEditNirDataModeEnum.Canceling:
                if (monograf.RowStatusId == null)
                {
                    _monografRepository.RemoveMonografAsync(monografEntry.MonografId);
                }
                return(RedirectToAction(nameof(Index)));

            case CreateOrEditNirDataModeEnum.AddingAuthor:
                if (AuthorIdAdd != 0 && monograf.MonografAuthors != null)
                {
                    var isExist = monografEntry.MonografAuthors.FirstOrDefault(a => a.AuthorId == AuthorIdAdd) != null;
                    if (!isExist)
                    {
                        monograf.MonografAuthors.Add(new MonografAuthor
                        {
                            AuthorId   = AuthorIdAdd,
                            AuthorPart = AuthorPart
                        });
                        _monografRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.EditingAuthor:
                break;

            case CreateOrEditNirDataModeEnum.RemovingAuthor:
                if (AuthorIdRemove != 0)
                {
                    var monografAuthorsToRemove = monograf.MonografAuthors.FirstOrDefault(aa => aa.AuthorId == AuthorIdRemove);
                    if (monografAuthorsToRemove != null)
                    {
                        monograf.MonografAuthors.Remove(monografAuthorsToRemove);
                        _monografRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.ApplyAuthorFilter:
                break;

            case CreateOrEditNirDataModeEnum.AddingNirSpecial:
                if (NirSpecialIdAdd != 0)
                {
                    var isExist = monograf.MonografNirSpecials.FirstOrDefault(s => s.NirSpecialId == NirSpecialIdAdd) != null;
                    if (!isExist)
                    {
                        monograf.MonografNirSpecials.Add(new MonografNirSpecial {
                            NirSpecialId = NirSpecialIdAdd
                        });
                        _monografRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.EditingNirSpecial:
                break;

            case CreateOrEditNirDataModeEnum.RemovingNirSpecial:
                if (NirSpecialIdRemove != 0)
                {
                    var monografToRemove = monograf.MonografNirSpecials.FirstOrDefault(s => s.NirSpecialId == NirSpecialIdRemove);
                    if (monografToRemove != null)
                    {
                        monograf.MonografNirSpecials.Remove(monografToRemove);
                        _monografRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.AddingNirTema:
                if (NirTemaIdAdd != 0)
                {
                    var isExists = monograf.MonografNirTemas.FirstOrDefault(s => s.NirTemaId == NirTemaIdAdd) != null;
                    if (!isExists)
                    {
                        monograf.MonografNirTemas.Add(new MonografNirTema {
                            NirTemaId = NirTemaIdAdd
                        });
                        _monografRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            case CreateOrEditNirDataModeEnum.EditingNirTema:
                break;

            case CreateOrEditNirDataModeEnum.RemovingNirTema:
                if (NirTemaIdRemove != 0)
                {
                    var monografToRemove = monograf.MonografNirTemas.FirstOrDefault(s => s.NirTemaId == NirTemaIdRemove);
                    if (monografToRemove != null)
                    {
                        monograf.MonografNirTemas.Remove(monografToRemove);
                        _monografRepository.UpdateMonograf(monografEntry, monograf);
                    }
                }
                break;

            default:
                break;
            }
            ViewBag.AuthorFilter = AuthorFilter;
            ViewBag.Authors      = _selectListRepository.GetSelectListAuthors(AuthorFilter);
            ViewBag.Years        = _selectListRepository.GetSelectListYears(monograf.YearId);
            ViewBag.NirSpecials  = _selectListRepository.GetSelectListNirSpecials();
            ViewBag.NirTemas     = _selectListRepository.GetSelectListNirTemas();

            return(View(monografEntry));


            //if (ModelState.IsValid && uploadedFile != null)
            //{

            //    FileModel f = await _fileModelRepository.UploadMonografAsync(monograf, uploadedFile);
            //}
            //ViewData["FileModelId"] = new SelectList(_context.Files, "Id", "Name", monograf.FileModelId);
            //ViewData["RowStatusId"] = new SelectList(_context.RowStatuses, "RowStatusId", "RowStatusName", monograf.RowStatusId);
            //ViewData["YearId"] = new SelectList(_context.Years, "YearId", "YearName", monograf.YearId);
            //return View(monograf);
        }