コード例 #1
0
        public async Task <int> SubmitAnswersAsync(QuestionnaireSubmission model)
        {
            var entity = new QuestionnaireSubmit
            {
                Id              = model.Id,
                UserId          = model.UserId,
                IsCompleted     = model.IsCompleted,
                LastUpdated     = DateTime.Now,
                QuestionAnswers = model.QuestionAnswers.Select(x => new QuestionnaireQuestionAnswer
                {
                    Id      = x.Id,
                    Text    = x.Text,
                    Answers = x.Answers
                }).ToList()
            };

            return(await _repository.InsertQuestionnaireAsync(entity));
        }
コード例 #2
0
 protected void Page_Load(object sender, EventArgs e)
 {
     Submissions = CacheHandler.GetSubmissions(Cache);
     if (CookieAuthentication.IsSet(Context.Request.Cookies))
     {
         StudentID         = CookieAuthentication.GetStudentID(Context.Request.Cookies);
         CurrentSubmission = Submissions.Get(StudentID);
         if (CurrentSubmission.SubmissionIPAddress == null)
         {
             Response.Redirect("./Questionnaire.aspx", false);
             Context.ApplicationInstance.CompleteRequest();
         }
         else
         {
             ccQuestionnaire.AssociatedQuestionnaire = CurrentSubmission.Questionnaire;
             CookieAuthentication.ExpireAllCookies(Request.Cookies, Response.Cookies);
         }
     }
 }
コード例 #3
0
        protected async void Page_Load(object sender, EventArgs e)
        {
            Submissions = CacheHandler.GetSubmissions(Cache);
            if (CookieAuthentication.IsSet(Context.Request.Cookies))
            {
                StudentID         = CookieAuthentication.GetStudentID(Context.Request.Cookies);
                CurrentSubmission = Submissions.Get(StudentID);
                if (CurrentSubmission.SubmissionIPAddress != null)
                {
                    Response.Redirect("./Result.aspx", false);
                    Context.ApplicationInstance.CompleteRequest();
                }
                else
                {
                    cmdConfirm.ServerClick += new EventHandler(cmdConfirm_Click);

                    if (!IsPostBack)
                    {
                        ccQuestionnaire.AssociatedQuestionnaire = CurrentSubmission.Questionnaire;
                    }
                }
            }
        }
コード例 #4
0
        private async void cmdSubmit_Click(object sender, EventArgs e)
        {
            Student             student;
            DateTime            birthDate;
            BasicUserProperties properties = new BasicUserProperties();

            properties.FirstName  = txtFirstName.Value;
            properties.SecondName = txtSecondName.Value;
            if (!DateTime.TryParseExact(calBirthDate.Value, @"yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out birthDate))
            {
                divErrorContainer.Controls.Add(new BootstrapAlert()
                {
                    Text    = "Il formato della data specificato non è supportato dall'applicazione. Rilevata modifica della struttura HTML e/o Javascript."
                    , Title = "Errore dati."
                    , ID    = "loginAlert"
                });
                Context.ApplicationInstance.CompleteRequest();
                return;
            }
            else
            {
                properties.BirthDate = birthDate;
            }

            student = new Student(properties);

            if (await student.AuthenticateAsync() == AuthenticationType.Student)
            {
                //checking if authenticated user is involved in the current questionnaire session
                if ((from s in CacheHandler.GetInvolvedStudents(Cache)
                     where s.ID.Equals(student.ID)
                     select s).FirstOrDefault() != null /*true*/)
                {
                    StudentSubmission = Submissions.Get(student.ID);

                    if (StudentSubmission == null)
                    {
                        if (Submissions.Items.Where(x => x.AssignationIPAddress == Request.UserHostAddress).FirstOrDefault() == null)
                        {
                            divErrorContainer.Controls.Add(new BootstrapAlert()
                            {
                                Text  = "ACCESSO NEGATO!",
                                Title = "Errore dati.",
                                ID    = "loginAlert"
                            });

                            /*
                             * QuestionnaireSession questionnaireSession = CacheHandler.GetQuestionnaireSession(Cache);
                             * QuestionnaireLib.Questionnaire assignedQuestionnaire = new QuestionnaireLib.Questionnaire(questionnaireSession.Questionnaire);
                             * assignedQuestionnaire.Populate();
                             * foreach (Question q in assignedQuestionnaire.Questions)
                             * {
                             *  q.Answers = Helpers.RimescolaCol(q.Answers);
                             * }
                             * StudentSubmission = new QuestionnaireSubmission(assignedQuestionnaire, student, Request.UserHostAddress, questionnaireSession);
                             * Submissions.Items.Add(StudentSubmission);
                             */
                        }
                        else
                        {
                            //ANOMALY HERE
                            //StudentSubmission.Anomalies.Add(new DifferentHostAnomaly(StudentSubmission.AssignationIPAddress, Request.UserHostAddress));
                            divErrorContainer.Controls.Add(new BootstrapAlert()
                            {
                                Text = "Tentativo di accesso ad un altro account dallo stesso host rilevato."
                                ,
                                Title = "Accesso fallito."
                                ,
                                ID = "loginAlert"
                            });
                            return;
                        }
                    }
                    //Preventing same user from logging from different machines
                    if (StudentSubmission.AssignationIPAddress == Request.UserHostAddress)
                    {
                        FormsAuthentication.SetAuthCookie(student.ID.ToString(), false);
                        if (Request.QueryString["ReturnUrl"] == null)
                        {
                            Response.Redirect("./Questionnaire.aspx", false);
                            Context.ApplicationInstance.CompleteRequest();
                        }
                        else
                        {
                            Response.Redirect(Request.QueryString["ReturnUrl"], false);
                            Context.ApplicationInstance.CompleteRequest();
                        }
                    }
                    else
                    {
                        //ANOMALY HERE
                        StudentSubmission.Anomalies.Add(new DifferentHostAnomaly(StudentSubmission.AssignationIPAddress, Request.UserHostAddress));
                        divErrorContainer.Controls.Add(new BootstrapAlert()
                        {
                            Text = "Tentativo di accesso da un altro host rilevato."
                            ,
                            Title = "Accesso fallito."
                            ,
                            ID = "loginAlert"
                        });
                    }
                }
                else
                {
                    divErrorContainer.Controls.Add(new BootstrapAlert()
                    {
                        Text = "Lo studente che possiede le credenziali specificate non partecipa a questa esaminazione."
                        ,
                        Title = "Accesso fallito."
                        ,
                        ID = "loginAlert"
                    });
                }
            }
            else
            {
                divErrorContainer.Controls.Add(new BootstrapAlert()
                {
                    Text    = "Assicurati di aver inserito correttamente i tuoi dati e riprova."
                    , Title = "Accesso fallito."
                    , ID    = "loginAlert"
                });
            }
        }
コード例 #5
0
 private void FileAddedHandler(object sender, FileSystemEventArgs e)
 {
     Submissions.Add(QuestionnaireSubmission.BinaryDeserialize(e.FullPath));
 }
コード例 #6
0
 public async Task <ActionResult <int> > Post([FromBody] QuestionnaireSubmission request)
 => await _answersService.SubmitAnswersAsync(request);
コード例 #7
0
        /// <summary>
        /// 人员提交问卷数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool SubmitQuestionnaire(QuestionnaireDTO dto)
        {
            using (var transaction = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions {
                IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted
            }))
            {
                try
                {
                    using (var db = base.GDDSVSPDb)
                    {
                        Guid     id                = Guid.NewGuid();
                        DateTime date              = DateTime.Now;
                        int      isDel             = Convert.ToInt32(IsDel.未删除);
                        Guid?    employeeId        = dto.EmployeeID;
                        Guid     questionnaireId   = dto.QuestionnaireID;
                        Guid     departmentId      = dto.DepartmentID;
                        Guid     functionalGroupId = dto.FunctionalGroupID;
                        int      isRelation        = dto.IsRelation;
                        QuestionnaireSubmission qs = new QuestionnaireSubmission();
                        qs.ID = id;
                        qs.QuestionnaireID = questionnaireId;
                        qs.EmployeeID      = employeeId;
                        qs.IsSubmit        = 1;
                        qs.CreateTime      = date;
                        qs.IsDel           = isDel;
                        db.QuestionnaireSubmission.Add(qs);
                        db.SaveChanges();

                        if (isRelation == Convert.ToInt32(QuestionnaireIsRelation.关联))
                        {
                            employeeId = null;
                        }
                        List <QuestionAnswerMapping> list      = new List <QuestionAnswerMapping>();
                        List <QuestionDTO>           questions = dto.Questions;
                        for (int i = 0; i < questions.Count; i++)
                        {
                            QuestionAnswerMapping obj = new QuestionAnswerMapping();
                            obj.QuestionAnswerID  = Guid.NewGuid();
                            obj.QuestionID        = questions[i].QuestionID;
                            obj.OptionID          = questions[i].OptionID;
                            obj.OptionReason      = questions[i].OptionReason;
                            obj.EmployeeID        = employeeId;
                            obj.QuestionnaireID   = questionnaireId;
                            obj.DepartmentID      = departmentId;
                            obj.FunctionalGroupID = functionalGroupId;
                            obj.CreateTime        = date;
                            obj.IsDel             = isDel;
                            list.Add(obj);
                        }
                        db.QuestionAnswerMapping.AddRange(list);
                        db.SaveChanges();

                        transaction.Complete();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                    return(false);
                }
            }
            return(true);
        }