Example #1
0
        public IActionResult New()
        {
            var model = new NewTrainingModel();

            model.Training = new Training();
            model.Training.MinimumScore    = 0;
            model.Training.CreatedByUserId = UserId;

            return(View(model));
        }
        public async Task CreateTrainingAsync(NewTrainingModel trainingModel)
        {
            _dbContext.Add <Training>(new Training()
            {
                EndDate     = trainingModel.EndDate,
                StartDate   = trainingModel.StartDate,
                Name        = trainingModel.Name,
                CreatedDate = DateTime.Now
            });

            await _dbContext.SaveChangesAsync();
        }
Example #3
0
        public async Task <IActionResult> NewTraining(NewTrainingModel newTrainingModel)
        {
            if (!ModelState.IsValid)
            {
                return(Error(ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ToString()));
            }
            try
            {
                int totalTrainingDays = newTrainingModel.EndDate.Subtract(newTrainingModel.StartDate).Days;
                totalTrainingDays = totalTrainingDays > 0 ? totalTrainingDays : 1;
                await _trainingService.CreateTrainingAsync(newTrainingModel);

                return(Success($"Training saved successfully, total training days : {totalTrainingDays}"));
            }
            catch (Exception ex)
            {
                return(Error(ex.Message));
            }
        }
Example #4
0
        public IActionResult New(NewTrainingModel model, IFormCollection form, ICollection <IFormFile> attachments)
        {
            model.Training.CreatedByUserId = UserId;

            if (attachments != null)
            {
                model.Training.Attachments = new Collection <TrainingAttachment>();
                foreach (var file in attachments)
                {
                    if (file != null && file.Length > 0)
                    {
                        var extenion = file.FileName.Substring(file.FileName.IndexOf(char.Parse(".")) + 1,
                                                               file.FileName.Length - file.FileName.IndexOf(char.Parse(".")) - 1);

                        if (!String.IsNullOrWhiteSpace(extenion))
                        {
                            extenion = extenion.ToLower();
                        }

                        if (extenion != "jpg" && extenion != "jpeg" && extenion != "png" && extenion != "gif" && extenion != "gif" &&
                            extenion != "pdf" && extenion != "doc" &&
                            extenion != "docx" && extenion != "ppt" && extenion != "pptx" && extenion != "pps" && extenion != "ppsx" &&
                            extenion != "odt" &&
                            extenion != "xls" && extenion != "xlsx" && extenion != "txt" && extenion != "mpg" && extenion != "avi" &&
                            extenion != "mpeg")
                        {
                            ModelState.AddModelError("fileToUpload", string.Format("File type ({0}) is not importable.", extenion));
                        }

                        if (file.Length > 30000000)
                        {
                            ModelState.AddModelError("fileToUpload", "Attachment is too large, must be smaller then 30MB.");
                        }

                        var attachment = new TrainingAttachment();
                        attachment.FileType = file.ContentType;
                        attachment.FileName = file.FileName;

                        var uploadedFile = new byte[file.OpenReadStream().Length];
                        file.OpenReadStream().Read(uploadedFile, 0, uploadedFile.Length);

                        attachment.Data = uploadedFile;
                        model.Training.Attachments.Add(attachment);
                    }
                }
            }

            var roles  = new List <string>();
            var groups = new List <string>();
            var users  = new List <string>();

            if (form.ContainsKey("rolesToAdd"))
            {
                roles.AddRange(form["rolesToAdd"].ToString().Split(char.Parse(",")));
            }

            if (form.ContainsKey("groupsToAdd"))
            {
                groups.AddRange(form["groupsToAdd"].ToString().Split(char.Parse(",")));
            }

            if (form.ContainsKey("usersToAdd"))
            {
                users.AddRange(form["usersToAdd"].ToString().Split(char.Parse(",")));
            }

            model.Training.Users = new List <TrainingUser>();

            if (model.SendToAll)
            {
                var allUsers = _departmentsService.GetAllUsersForDepartment(DepartmentId);
                foreach (var user in allUsers)
                {
                    var trainingUser = new TrainingUser();
                    trainingUser.UserId = user.UserId;

                    model.Training.Users.Add(trainingUser);
                }
            }
            else
            {
                foreach (var user in users)
                {
                    var trainingUser = new TrainingUser();
                    trainingUser.UserId = user;

                    model.Training.Users.Add(trainingUser);
                }

                foreach (var group in groups)
                {
                    var members = _departmentGroupsService.GetAllMembersForGroup(int.Parse(group));

                    foreach (var member in members)
                    {
                        var trainingUser = new TrainingUser();
                        trainingUser.UserId = member.UserId;

                        if (model.Training.Users.All(x => x.UserId != member.UserId))
                        {
                            model.Training.Users.Add(trainingUser);
                        }
                    }
                }

                foreach (var role in roles)
                {
                    var roleMembers = _personnelRolesService.GetAllMembersOfRole(int.Parse(role));

                    foreach (var member in roleMembers)
                    {
                        var trainingUser = new TrainingUser();
                        trainingUser.UserId = member.UserId;

                        if (model.Training.Users.All(x => x.UserId != member.UserId))
                        {
                            model.Training.Users.Add(trainingUser);
                        }
                    }
                }
            }

            if (!model.Training.Users.Any())
            {
                ModelState.AddModelError("", "You have not selected any personnel, roles or groups to assign this training to.");
            }

            if (ModelState.IsValid)
            {
                List <int> questions = (from object key in form.Keys where key.ToString().StartsWith("question_") select int.Parse(key.ToString().Replace("question_", ""))).ToList();

                if (questions.Count > 0)
                {
                    model.Training.Questions = new Collection <TrainingQuestion>();
                }

                model.Training.DepartmentId    = DepartmentId;
                model.Training.CreatedOn       = DateTime.UtcNow;
                model.Training.CreatedByUserId = UserId;
                model.Training.GroupsToAdd     = form["groupsToAdd"];
                model.Training.RolesToAdd      = form["rolesToAdd"];
                model.Training.UsersToAdd      = form["usersToAdd"];
                model.Training.Description     = System.Net.WebUtility.HtmlDecode(model.Training.Description);
                model.Training.TrainingText    = System.Net.WebUtility.HtmlDecode(model.Training.TrainingText);


                foreach (var i in questions)
                {
                    if (form.ContainsKey("question_" + i))
                    {
                        var questionText = form["question_" + i];
                        var question     = new TrainingQuestion();
                        question.Question = questionText;

                        List <int> answers = (from object key in form.Keys where key.ToString().StartsWith("answerForQuestion_" + i + "_") select int.Parse(key.ToString().Replace("answerForQuestion_" + i + "_", ""))).ToList();

                        if (answers.Count > 0)
                        {
                            question.Answers = new Collection <TrainingQuestionAnswer>();
                        }

                        foreach (var answer in answers)
                        {
                            var trainingQuestionAnswer = new TrainingQuestionAnswer();
                            var answerForQuestion      = form["answerForQuestion_" + i + "_" + answer];

                            var possibleAnswer = form["answer_" + i];
                            trainingQuestionAnswer.Answer = answerForQuestion;

                            if (!string.IsNullOrWhiteSpace(possibleAnswer))
                            {
                                if ("answerForQuestion_" + i + "_" + answer == possibleAnswer)
                                {
                                    trainingQuestionAnswer.Correct = true;
                                }
                            }

                            question.Answers.Add(trainingQuestionAnswer);
                        }

                        model.Training.Questions.Add(question);
                    }
                }

                _trainingService.Save(model.Training);

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }