public ActionResult Create(MathTask mathTask, HttpPostedFileBase file) { initMathML(); var curId = HttpContext.User.Identity.GetUserId(); // получаем текущего пользователя ApplicationUser user = Db.Users.FirstOrDefault(m => m.Id == curId); if (user == null) { return RedirectToAction("LogOff", "Account"); } if (ModelState.IsValid) { TryCreate(user, mathTask, file); return RedirectToAction("Index"); } return View(mathTask); }
protected void TryCreate(ApplicationUser user, MathTask mathTask, HttpPostedFileBase file) { //получаем время открытия DateTime current = DateTime.Now; Document doc = null ; ; string fileName = current.ToString(user.Id.GetHashCode() + "dd/MM/yyyy H:mm:ss").Replace(":", "_").Replace("/", ".").Replace(" ", "_"); string path = Server.MapPath("~/Files/RequestFiles/" + fileName); string ext = "png"; // Если приложен код латекса - грузим его как файл(создаем и грузим) // Иначе - сохраняем как файл if ( !mathTask.LatexCode.IsNullOrWhiteSpace() ) { Bitmap bmp = MathMLFormulaControl.generateBitmapFromLatex(mathTask.LatexCode); bmp.Save(path, System.Drawing.Imaging.ImageFormat.Png); bmp.Dispose(); doc = new Document(); doc.Size = 0; doc.Type = "png"; doc.Url = path + ".png"; } else if (file != null) { // Получаем расширение ext = file.FileName.Substring(file.FileName.LastIndexOf('.')); path = path + ext; // сохраняем файл по определенному пути на сервере file.SaveAs(path); doc = new Document(); doc.Size = file.ContentLength; doc.Type = ext; doc.Url = path; } else { mathTask.Description = DeterminantComplexity.GenerateByLevel(mathTask.MathTaskTypeId - 1, mathTask.Level, true).ToString(); } mathTask.Executors = new List<ApplicationUser>(); // Если не рассылка - добавляем всю выбранную группу if (mathTask.SelectedExecutorId != null) { var executor = this.Db.Users.First(x => x.Id == mathTask.SelectedExecutorId); mathTask.Executors.Add(executor); } else { var students = Db.Users.Where(x => x.Id == mathTask.StudentsGroupId.ToString()); foreach (var student in students) { mathTask.Executors.Add(student); } } // Иначе - добавляем указанного пользователя // указываем автора задачи mathTask.Author = user; mathTask.AuthorId = user.Id; // если сформирован файл if (doc != null) { mathTask.Document = doc; Db.Documents.Add(doc); } else mathTask.Document = null; mathTask.Status = (int)MathTaskStatus.Open; //Добавляем задачу с возможно приложенными документами Db.MathTasks.Add( mathTask ); user.MathTasks.Add( mathTask ); Db.Entry(user).State = EntityState.Modified; try { Db.SaveChanges(); } catch (Exception e) { throw new Exception(e.Message); } }
//[Authorize] public ActionResult Create(MathTask request, HttpPostedFileBase error) { var curId = HttpContext.User.Identity.GetUserId(); // получаем текущего пользователя ApplicationUser user = db.Users.FirstOrDefault(m => m.Id == curId); if (user == null) { return RedirectToAction("LogOff", "Account"); } if (ModelState.IsValid) { // указываем статус Открыта у задачи request.Status = (int)RequestStatus.Open; //получаем время открытия DateTime current = DateTime.Now; // указываем пользователя задачи request.Author = user; request.AuthorId = user.Id; // если получен файл if (error != null) { Document doc = new Document(); doc.Size = error.ContentLength; // Получаем расширение string ext = error.FileName.Substring(error.FileName.LastIndexOf('.')); doc.Type = ext; // сохраняем файл по определенному пути на сервере string path = current.ToString(user.Id.GetHashCode()+"dd/MM/yyyy H:mm:ss").Replace(":", "_").Replace("/", ".") + ext; error.SaveAs(Server.MapPath("~/Files/RequestFiles/" + path)); doc.Url = path; request.Document = doc; db.Documents.Add(doc); } else request.Document = null; request.Status = (int)RequestStatus.Open; //Добавляем задачу с возможно приложенными документами db.Requests.Add(request); user.Requests.Add(request); db.Entry(user).State = EntityState.Modified; try { db.SaveChanges(); } catch(Exception e) { return Content(e.Message); } return RedirectToAction("Index"); } return View(request); }