public async Task <IActionResult> Create(List <IFormFile> files, string studio, string studio2, string studio3, string question_tags, [Bind("IsArchived,Id,Title,Description,IdUser,Date")] Question question) { User actualUser = null; if (!string.IsNullOrEmpty(HttpContext.Session.GetString(UsersController.ACTIVE_USERNAME))) { actualUser = model.GetUser(HttpContext.Session.GetString(UsersController.ACTIVE_USERNAME)); question.UserId = actualUser.ID; } if (ModelState.IsValid) { _context.Add(question); if (!string.IsNullOrEmpty(studio)) { var st = await _context.Studio.FirstOrDefaultAsync(m => m.Name == studio); if (!string.IsNullOrEmpty(question_tags)) { string[] tagsStr = question_tags.Split(","); foreach (string t in tagsStr) { var tag = await _context.Label.FirstOrDefaultAsync(m => m.Tag == t); if (tag == null) { tag = new Label(); tag.Tag = t; _context.Add(tag); } tag.NumberOfTimes++; var questionLabel = new QuestionLabel { LabelId = tag.Id, QuestionId = question.Id }; _context.Add(questionLabel); } } var st1 = await _context.Studio.FirstOrDefaultAsync(m => m.Name == studio); var questionStudio = new QuestionStudio { StudioId = st1.Id, QuestionId = question.Id }; _context.Add(questionStudio); if (studio2 != studio) { var st2 = await _context.Studio.FirstOrDefaultAsync(m => m.Name == studio2); var questionStudio2 = new QuestionStudio { StudioId = st2.Id, QuestionId = question.Id }; _context.Add(questionStudio2); } if (studio3 != studio && studio3 != studio2) { var st3 = await _context.Studio.FirstOrDefaultAsync(m => m.Name == studio3); var questionStudio3 = new QuestionStudio { StudioId = st3.Id, QuestionId = question.Id }; _context.Add(questionStudio3); } await _context.SaveChangesAsync(); var filePath = Path.Combine(_hostingEnvironment.WebRootPath, "uploads", question.Id + ""); if (Directory.Exists(filePath)) { Directory.Delete(filePath, true); } Directory.CreateDirectory(filePath); foreach (var formFile in files) { filePath = Path.Combine(_hostingEnvironment.WebRootPath, "uploads", question.Id + "", Path.GetFileName(formFile.FileName)); if (formFile.Length > 0) { using (var stream = new FileStream(filePath, FileMode.Create)) { await formFile.CopyToAsync(stream); } } } SendEmailStudio(question, st); } return(RedirectToAction(nameof(Index))); } return(View(question)); }
public async Task <IActionResult> Create(string action, List <IFormFile> files, string studio, string studio2, string studio3, string question_tags, [Bind("IsArchived,Id,Title,Description,IdUser,Date,question_tags")] Question question) { string user = SetActiveUser(); if (action == "Suggestions") { Suggestion(question.Title, question.Description); String[] q = { question.Title, question.Description }; TempData["question"] = q; } else if (action == "Ask now") { List <Studio> studios = new List <Studio>(); User actualUser = null; if (!string.IsNullOrEmpty(user)) { actualUser = model.GetUser(user); actualUser.QUESTIONS_ASKED++; question.UserId = actualUser.ID; } else { return(RedirectToAction("Index", "Users", new { message = "Inicie sesión" })); } if (ModelState.IsValid) { _context.Add(question); if (!string.IsNullOrEmpty(studio)) { //var st = await _context.Studio.FirstOrDefaultAsync(m => m.Name == studio); if (!string.IsNullOrEmpty(question_tags)) { string[] tagsStr = question_tags.Split(","); foreach (string t in tagsStr) { var tag = await _context.Label.FirstOrDefaultAsync(m => m.Tag == t); if (tag == null) { tag = new Label(); tag.Tag = t; _context.Add(tag); } tag.NumberOfTimes++; var questionLabel = new QuestionLabel { LabelId = tag.Id, QuestionId = question.Id }; _context.Add(questionLabel); } } var st1 = await _context.Studio.FirstOrDefaultAsync(m => m.Name == studio); var questionStudio = new QuestionStudio { StudioId = st1.Id, QuestionId = question.Id }; studios.Add(st1); _context.Add(questionStudio); if (studio2 != studio) { var st2 = await _context.Studio.FirstOrDefaultAsync(m => m.Name == studio2); var questionStudio2 = new QuestionStudio { StudioId = st2.Id, QuestionId = question.Id }; studios.Add(st2); _context.Add(questionStudio2); } if (studio3 != studio && studio3 != studio2) { var st3 = await _context.Studio.FirstOrDefaultAsync(m => m.Name == studio3); var questionStudio3 = new QuestionStudio { StudioId = st3.Id, QuestionId = question.Id }; studios.Add(st3); _context.Add(questionStudio3); } await _context.SaveChangesAsync(); var filePath = Path.Combine(_hostingEnvironment.WebRootPath, "uploads", question.Id + ""); if (Directory.Exists(filePath)) { Directory.Delete(filePath, true); } Directory.CreateDirectory(filePath); foreach (var formFile in files) { filePath = Path.Combine(_hostingEnvironment.WebRootPath, "uploads", question.Id + "", Path.GetFileName(formFile.FileName)); if (formFile.Length > 0) { using (var stream = new FileStream(filePath, FileMode.Create)) { await formFile.CopyToAsync(stream); } } } SendEmailStudio(question, studios); } return(RedirectToAction(nameof(Index))); } } return(RedirectToAction(nameof(Create))); }