public async Task <IActionResult> AddLabJournal(EducationalMaterialViewModel model, string query, IFormFileCollection uploads)
        {
            List <Media> medias = new List <Media>();

            Employee employee = await universityData.Employees.GetByFullNameAsync(model.EmployeeFullName);

            if (employee == null)
            {
                ModelState.AddModelError("FullName", "Преподаватель не найден");
            }

            if (model.Work == null)
            {
                ModelState.AddModelError("Work", "Введите название работы");
            }

            if (uploads.Count <= 0)
            {
                ModelState.AddModelError("Files", "Не загржен ни один файл");
            }

            try
            {
                model.Semester = _universityStaticData.GetSemestrBySubject(model.Subject);
            }
            catch (Exception)
            {
                ModelState.AddModelError("Work", "Нет такой работы");
            }


            if (ModelState.IsValid)
            {
                LaboratoryJournal lj = new LaboratoryJournal()
                {
                    Name        = model.Name,
                    Employee    = await universityData.Employees.GetByFullNameAsync(model.EmployeeFullName),
                    Description = model.Description,
                    Subject     = model.Subject,
                    Type        = model.Type,
                    Materials   = medias,

                    Semester = model.Semester ?? throw new ArgumentNullException(),
                                     Work = model.Work ?? throw new ArgumentNullException(),
                                                  Mark = model.Mark,
                                                  Year = model.Year
                };
                await universityData.LaboratoryJournals.AddAsync(lj);

                string patrialPath = "Content/EducationalMaterials/" + String.Format("{0}_{1}",
                                                                                     DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss"), model.Name.Transliterate());
                string path = Path.Combine(_webHost.WebRootPath, patrialPath);
                Directory.CreateDirectory(path);
                var fileNames = query.Split(',');
                for (int i = 0; i < fileNames.Length; i++)
                {
                    var    uploadfileName = fileNames[i];
                    var    file           = uploads.Single(x => x.FileName == uploadfileName);
                    string fileName       = (i + 1).ToString() + "." + file.FileName.Split('.').Last();
                    using (var fileSteam = new FileStream(Path.Combine(path, fileName), FileMode.Create))
                    {
                        await file.CopyToAsync(fileSteam);
                    }
                    medias.Add(new Media(lj,
                                         fileName, file.ContentType, patrialPath, await _userManager.GetUserAsync(User)));
                }

                foreach (var media in medias)
                {
                    media.EducationalMaterial = lj;
                }
                foreach (var media in medias)
                {
                    await universityData.Medias.AddAsync(media);
                }
                universityData.SaveAsync();

                return(RedirectToAction("GetMaterials", "EducationalMaterials"));
            }
            ViewBag.Types = Types;
            return(View("AddMaterial", model));
        }
    }
Exemple #2
0
        public async Task <IActionResult> AddMaterial(EducationalMaterialViewModel model, IFormFileCollection uploads)
        {
            Employee employee = await universityData.Employees.GetByFullNameAsync(model.EmployeeFullName);

            if (employee == null)
            {
                ModelState.AddModelError("FullName", "Преподаватель не найден");
            }

            if (uploads.Count <= 0)
            {
                ModelState.AddModelError("Files", "Не загржен ни один файл");
            }

            List <Media> medias = new List <Media>();


            if (ModelState.IsValid)
            {
                EducationalMaterial em = new EducationalMaterial()
                {
                    Name        = model.Name,
                    Employee    = await universityData.Employees.GetByFullNameAsync(model.EmployeeFullName),
                    Description = model.Description,
                    Subject     = model.Subject,
                    Type        = model.Type,
                    Materials   = medias
                };
                await universityData.EducationalMaterials.AddAsync(em);


                string patrialPath = "Content/EducationalMaterials/" + String.Format("{0}_{1}",
                                                                                     DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss"), model.Name.Transliterate());
                string path = Path.Combine(_webHost.WebRootPath, patrialPath);
                Directory.CreateDirectory(path);
                foreach (var file in uploads)
                {
                    using (var fileSteam = new FileStream(Path.Combine(path, file.FileName), FileMode.Create))
                    {
                        await file.CopyToAsync(fileSteam);
                    }

                    medias.Add(new Media(em,
                                         file.FileName, file.ContentType, patrialPath, await _userManager.GetUserAsync(User)));
                }

                foreach (var media in medias)
                {
                    media.EducationalMaterial = em;
                }
                foreach (var media in medias)
                {
                    await universityData.Medias.AddAsync(media);
                }
                universityData.SaveAsync();

                return(RedirectToAction("GetMaterials", "EducationalMaterials"));
            }
            ViewBag.Types = Types;
            return(View(model));
        }