コード例 #1
0
        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));
        }
コード例 #2
0
        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)));
        }