Ejemplo n.º 1
0
        public virtual async Task <ActionServiceResult> GetEntityByID(string id)
        {
            var response = new ActionServiceResult();

            if (string.IsNullOrEmpty(id))
            {
                response.Success = false;
                response.Code    = Code.ValidateEntity;
                response.Message = Resources.ValidateEntity;
            }
            else
            {
                var entity = await _baseEntityService.GetEntityById(id);

                if (entity == null)
                {
                    response.Success = false;
                    response.Code    = Code.NotFound;
                    response.Message = Resources.NotFound;
                }
                else
                {
                    response.Data = entity;
                }
            }

            return(response);
        }
Ejemplo n.º 2
0
        public async Task <ActionServiceResult> ScoreStatistics(string contestID)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();
            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID))
            {
                result.Success = false;
                result.Code    = Code.NotFound;
            }
            var user = await _baseUserEntityService.GetEntityById(userID);

            if (user == null)
            {
                return(new ActionServiceResult()
                {
                    Success = false,
                    Message = "User khong ton tai trong he thong",
                    Code = Code.NotFound
                });
            }

            //var roleName = string.IsNullOrEmpty(_role.GetValueOrDefault(user.RoleId.ToString())) ? "student" : _role.GetValueOrDefault(user.RoleId.ToString());
            return(_contestService.ThongKe(userID, contestID, user.RoleId.ToString()));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Xử lý khi chương trình có Exception xảy ra
        /// </summary>
        /// <param name="context"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        /// CreatedBy: NVMANH (01/07/2020)
        private Task HandleExceptionAsync(HttpContext context, Exception ex)
        {
            var elkHelper  = new ELKHelper();
            var methodName = new StackTrace(ex).GetFrame(0).GetMethod().Name;

            elkHelper.Error(string.Empty, ex.Message, string.Empty, methodName, ex);

            var code  = HttpStatusCode.InternalServerError; // 500 if unexpected
            var msg   = Resources.ErrorException;           // 500 if unexpected
            var mCode = MISACode.Exception;

            if (ex is ImportException)
            {
                code = HttpStatusCode.BadRequest;
                msg  = ex.Message;
            }
            //else if (ex is MyUnauthorizedException) code = HttpStatusCode.Unauthorized;
            //else if (ex is MyException) code = HttpStatusCode.BadRequest;
            var result = new ActionServiceResult
            {
                Success  = false,
                Messenge = msg,
                MISACode = mCode,
            };

            if (_webHostEnvironment.IsDevelopment())
            {
                result.Data = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
            }
            var resultJson = JsonConvert.SerializeObject(result);

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;
            return(context.Response.WriteAsync(resultJson));
        }
Ejemplo n.º 4
0
        public virtual async Task <ActionServiceResult> Post([FromBody] T entity)
        {
            var response = new ActionServiceResult();

            // Validate dữ liệu theo các Attribure Property
            if (!ModelState.IsValid)
            {
                response.Success = false;
                response.Message = Resources.ValidateEntity;
                response.Code    = Code.ValidateEntity;
                response.Data    = ModelState;
            }
            else
            {
                var result = await _baseEntityService.Insert(entity, true);

                if (result.Success == false)
                {
                    response.Success = false;
                    response.Code    = Code.ErrorAddEntity;
                    response.Message = Resources.ErrorAddEntity;
                }
            }
            return(response);
        }
Ejemplo n.º 5
0
        public virtual async Task <ActionResult <T> > Post([FromBody] T entity)
        {
            // Validate dữ liệu theo các Attribure Property
            if (!ModelState.IsValid)
            {
                var resultValidate = new ActionServiceResult()
                {
                    Success  = false,
                    Messenge = Resources.ErrorValidate_NotValid,
                    MISACode = MISACode.ValidateEntity,
                    Data     = ModelState
                };
                return(BadRequest(resultValidate));
            }

            var result = await _baseEntityService.Insert(entity, true);

            if (result.Success == false)
            {
                return(BadRequest(result));
            }
            var tableName = entity.GetType().Name;

            return(Created("Created " + tableName, result.Data));
        }
Ejemplo n.º 6
0
        public virtual ActionServiceResult AddEntity(TEntity entity)
        {
            ActionServiceResult actionServiceResult = new ActionServiceResult();
            var isValidate = this.BaseValidate(entity);
            var param      = this.MappingDataType(entity);

            if (isValidate.Count == 0)
            {
                return(new ActionServiceResult()
                {
                    Message = "Thêm thành công",
                    Success = true,
                    MISAcode = Enumeration.MISAcode.Success,
                    data = _baseRepository.ExecuteNonQuery($"Proc_Add{_tableName}", param, commandType: CommandType.StoredProcedure)
                });
            }
            return(new ActionServiceResult()
            {
                Message = "Không được để trống",
                Success = true,
                MISAcode = Enumeration.MISAcode.Validate,
                fieldNotValids = isValidate,
                data = null
            });
        }
Ejemplo n.º 7
0
        public async Task <ActionServiceResult> Put([FromBody] Examination entity)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();
            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID) || entity == null)
            {
                result.Success = false;
                result.Code    = Code.NotFound;
            }
            else
            {
                var response = new ActionServiceResult();
                if (entity == null)
                {
                    response.Success = false;
                    response.Code    = Code.NotFound;
                    response.Message = Resources.NotFound;
                }
                else
                {
                    if (entity.Status != 1)
                    {
                        entity.ModifiedDate = Utils.GetNistTime();
                        response            = await _baseEntityService.Update(entity);
                    }
                    return(response);
                }
                return(response);
            }
            return(new ActionServiceResult());
        }
Ejemplo n.º 8
0
        public async Task <ActionServiceResult> SubmitExam(Exam exam)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();
            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID) || exam == null)
            {
                result.Success = false;
                result.Code    = ApplicationCore.Enums.Enumration.Code.NotFound;
            }
            else
            {
                if (exam.Status == 0)
                {
                    exam.ModifiedDate = DateTime.Now;
                    var message = JsonConvert.SerializeObject(exam);
                    using (var producer = new ProducerWrapper <Null, string>(_producerConfig, "autosubmit"))
                    {
                        await producer.SendMessage(message);
                    }
                    return(new ActionServiceResult()
                    {
                        Success = true,
                        Code = Code.Success,
                        Message = Resources.Success,
                        Data = exam.ExamId
                    });
                }
                else
                {
                    var contest = await _contestRepo.GetEntityByIdAsync(exam.ContestId);

                    if (DateTime.Compare(DateTime.Now, contest.FinishTime) <= 0)
                    {
                        //Todo tinh diem
                        exam.Point   = 10;
                        exam.IsDoing = 0;
                        exam.Status  = 1;
                        await _baseEntityService.Update(exam);

                        result.Data = exam.ExamId;
                    }
                    else
                    {
                        return(new ActionServiceResult
                        {
                            Code = Code.NotFound,
                            Data = null,
                            Message = Resources.NotFound,
                            Success = false
                        });
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 9
0
        public virtual async Task <ActionServiceResult> GetEntities()
        {
            var response = new ActionServiceResult();
            var entities = await _baseEntityService.GetEntities();

            response.Data = entities;
            return(response);
        }
Ejemplo n.º 10
0
        public static bool HandleHttpClientResponse(ActionServiceResult resultBase, HttpResponseMessage responseMsg)
        {
            var success = responseMsg.IsSuccessStatusCode;

            if (!success)
            {
                var reasonPhrase = !responseMsg.IsSuccessStatusCode ? responseMsg.ReasonPhrase : "Call G12 Service has exception!";
                var statusCode   = !responseMsg.IsSuccessStatusCode ? ((int)responseMsg.StatusCode).ToString() : "888";
                resultBase.Message = $"Call G12 has error: " + $"ReasonPhrase: {reasonPhrase} " + $"- StatusCode: {statusCode}";
                resultBase.Code    = Code.Exception;
            }
            return(success);
        }
Ejemplo n.º 11
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseCors();

            app.Use(async(context, next) =>
            {
                var actionResult = new ActionServiceResult();
                var path         = context.Request.Path.ToString();
                //var authorization = context.Request.Headers["Authorization"].ToString();
                var userID = context.Request.Headers["UserID"].ToString();
                if (path.Contains("api") && string.IsNullOrEmpty(userID))
                {
                    context.Response.StatusCode  = 401;
                    context.Response.ContentType = "application/json";
                    actionResult.Success         = false;
                    actionResult.Code            = Code.ValidateEntity;
                    actionResult.Message         = Resources.ValidateEntity;
                    actionResult.Data            = null;
                    var jsonString = JsonConvert.SerializeObject(actionResult);
                    await context.Response.WriteAsync(jsonString, Encoding.UTF8);
                    await context.Response.CompleteAsync();
                    return;
                }
                await next.Invoke();
            });

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "Service V1");
                c.RoutePrefix = "swagger";
            });
            app.UseHttpsRedirection();

            app.UseMiddleware(typeof(ErrorHandlingMiddleware));

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
Ejemplo n.º 12
0
        public virtual async Task <ActionServiceResult> Put([FromBody] T entity)
        {
            var response = new ActionServiceResult();

            if (entity == null)
            {
                response.Success = false;
                response.Code    = Code.NotFound;
                response.Message = Resources.NotFound;
            }
            else
            {
                response = await _baseEntityService.Update(entity);
            }
            return(response);
        }
Ejemplo n.º 13
0
        public async Task <ActionServiceResult> GetByID(string termID)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();
            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID))
            {
                result.Success = false;
                result.Code    = Code.NotFound;
            }

            var response = await _termService.GetByTermID(termID);

            return(response);
        }
Ejemplo n.º 14
0
        public virtual async Task <ActionServiceResult> Delete([FromBody] List <string> listID)
        {
            var response = new ActionServiceResult();

            if (listID.Count == 0 || listID == null)
            {
                response.Success = false;
                response.Code    = Code.ValidateEntity;
                response.Message = Resources.ValidateEntity;
            }
            else
            {
                List <int> resultArray = new List <int>();
                var        success     = false;
                foreach (var id in listID)
                {
                    var result = 0;
                    if ((await _baseEntityService.GetEntityById(id)) == null)
                    {
                        result = 3;
                    }
                    else
                    {
                        result = await _baseEntityService.Delete(id);
                    }
                    if (result != 0)
                    {
                        success = true;
                    }
                    resultArray.Add(result);
                }
                response.Data = resultArray;
                if (success == false)
                {
                    response.Success = false;
                    response.Code    = Code.ErrorDeleteEntity;
                    response.Message = Resources.ErrorDeleteEntity;
                }
            }
            return(response);
        }
Ejemplo n.º 15
0
        public async Task <ActionServiceResult> GetByID(string contestID)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();
            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID))
            {
                result.Success = false;
                result.Code    = ApplicationCore.Enums.Enumration.Code.NotFound;
            }
            else
            {
                var response = await _baseEntityService.GetEntityById(contestID);

                result.Data = response;
            }
            return(result);
        }
Ejemplo n.º 16
0
        public async Task <ActionServiceResult> GetByID(string contestID)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();
            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID))
            {
                result.Success = false;
                result.Code    = Code.NotFound;
            }
            else
            {
                var response = await _contestService.CheckScreen(userID, contestID);

                result.Data = response;
            }
            return(result);
        }
Ejemplo n.º 17
0
        public async Task <ActionServiceResult> GetByUserID(string userID, string contestID, string roleName)
        {
            var result   = new ActionServiceResult();
            var response = _examRepo.GetExamByContestID(contestID);

            switch (roleName)
            {
            case "lecture":
                result.Data = response;
                return(result);

            case "student":
                var exam = response.Where(item => item.UserId.ToString().Trim() == userID.Trim()).FirstOrDefault();

                if (exam == null)
                {
                    var examRes = await CreateExam(contestID, userID);


                    await _examRepo.AddAsync(examRes);

                    var examDTO = new ExamDTO();
                    examDTO          = _mapper.Map <ExamDTO>(examRes);
                    examDTO.Question = JsonConvert.DeserializeObject <List <QuestionDescription> >(examRes.Question);
                    return(new ActionServiceResult(true, Resources.Success, Code.Success, examDTO, 0));
                }
                else
                {
                    exam.ModifiedDate = DateTime.Now;
                    result.Data       = exam;
                    await _examRepo.Update(exam);

                    return(result);
                }

            default:
                break;
            }
            return(result);
        }
Ejemplo n.º 18
0
        public async Task <ActionServiceResult> Paging(string keyword, int index = 1, int size = 15)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();
            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID))
            {
                result.Success = false;
                result.Code    = ApplicationCore.Enums.Enumration.Code.NotFound;
            }
            else
            {
                var response = await _termService.Paging(userID, index, size, keyword);

                result.Data         = response;
                result.TotalRecords = await _termService.GetTotalRecords(userID, keyword);
            }
            return(result);
        }
Ejemplo n.º 19
0
        public ActionServiceResult ThongKe(string userID, string contestID, string roleID)
        {
            var result = new ActionServiceResult();

            var roleName = string.IsNullOrEmpty(_role.GetValueOrDefault(roleID)) ? "student" : _role.GetValueOrDefault(roleID);


            var exams       = _examBaseRepository.GetEntitites("Proc_GetExamByContestID", new object[] { contestID }).Result.ToList();
            var transcripts = _transcriptBaseRepository.GetEntitites("Proc_GetTranscriptsByContestID", new object[] { contestID }).Result;

            switch (roleName)
            {
            case "student":
                result.Data = transcripts.Where(item => item.UserId == Guid.Parse(userID));
                break;

            case "lecture":
                result.Data = transcripts;
                break;
            }
            return(result);
        }
Ejemplo n.º 20
0
        public async Task <ActionServiceResult> GetEntityByID([FromQuery] string contestID)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID   = userHeader.FirstOrDefault().ToString();
            var token    = Request.Headers["Authorization"].ToString();
            var roleName = Utils.GetClaimFromToken(token, "rolename") == "" ? "student" : Utils.GetClaimFromToken(token, "rolename");

            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID) || string.IsNullOrEmpty(contestID))
            {
                result.Success = false;
                result.Code    = Code.NotFound;
            }
            else
            {
                var response = await _examService.GetByUserID(contestID);

                switch (roleName)
                {
                case "lecture":
                    result.Data = response;
                    return(result);

                case "student":
                    var exam = response.Where(item => item.UserId.ToString() == userID).FirstOrDefault();
                    result.Data = exam;

                    if (exam == null)
                    {
                        //Handle goi api tao de thi tu nhom 10
                        var res = JsonConvert.DeserializeObject("[{'Question':'Day la cau hoi','type':1,'Answer':'|Dap an 1|Dap an 2 |Dap an 3'},{ 'Question':'Day la cau hoi','type':1,'Answer':'|Dap an 1|Dap an 2 |Dap an 3'},{ 'Question':'Day la cau hoi','type':1,'Answer':'|Dap an 1|Dap an 2 |Dap an 3'}]");
                        //
                        var examRes = new Exam();
                        examRes.ContestId    = Guid.Parse(contestID);
                        examRes.CreatedDate  = DateTime.Now;
                        examRes.ModifiedDate = DateTime.Now;
                        examRes.ExamId       = Guid.NewGuid();
                        examRes.UserId       = Guid.Parse(userID);
                        examRes.Question     = response;
                        //exam.Answer = response.Answer;
                        examRes.IsDoing = 1;
                        examRes.Status  = 0;

                        await _baseEntityService.Insert(examRes);

                        return(new ActionServiceResult(true, Resources.Success, Code.Success, examRes, 0));
                    }
                    else
                    {
                        exam.ModifiedDate = DateTime.Now;
                        result.Data       = exam;
                        await _baseEntityService.Update(exam);

                        return(result);
                    }

                default:
                    break;
                }
            }
            return(result);
        }
Ejemplo n.º 21
0
        public async Task <ActionServiceResult> GetByID(string examID)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();

            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID) || examID == null)
            {
                result.Success = false;
                result.Code    = Code.NotFound;
            }
            else
            {
                var response = new ActionServiceResult();
                var exam     = await _baseEntityService.GetEntityById(examID);

                if (exam == null)
                {
                    response.Success = false;
                    response.Code    = Code.NotFound;
                    response.Message = Resources.NotFound;

                    return(response);
                }
                else
                {
                    var contest = await _contestRepo.GetEntityByIdAsync(exam.ContestId);

                    if (DateTime.Compare(Utils.GetNistTime(), contest.FinishTime) >= 0)
                    {
                        if (exam.Status == 0)
                        {
                            //Tinh diem
                            exam.Point  = Utils.TinhDiem(exam.Result, exam.Answer);
                            exam.Status = 1;
                            await _baseEntityService.Update(exam);
                        }
                        exam.IsDoing = null;
                        exam.Result  = null;
                        exam.Status  = null;
                    }
                    else if (DateTime.Compare(Utils.GetNistTime(), contest.StartTime) < 0)
                    {
                        return(null);
                    }
                    else
                    {
                        if (exam.TimeUsing < contest.TimeToDo)
                        {
                            if (exam.Status == 0)
                            {
                                if (exam.IsDoing == 1)
                                {
                                    var now = DateTime.Now;
                                    if ((now - exam.ModifiedDate.Value).TotalSeconds > 10)
                                    {
                                        if (exam.StartAgain == null)
                                        {
                                            if (exam.TimeUsing == 0)
                                            {
                                                exam.TimeUsing   += (exam.ModifiedDate.Value - exam.CreatedDate.Value).TotalSeconds / 60.0;
                                                exam.StartAgain   = now;
                                                exam.ModifiedDate = now;
                                            }
                                        }
                                        else
                                        {
                                            exam.TimeUsing   += (exam.ModifiedDate.Value - exam.StartAgain.Value).TotalSeconds / 60.0;
                                            exam.StartAgain   = now;
                                            exam.ModifiedDate = now;
                                        }

                                        await _baseEntityService.Update(exam);

                                        return(new ActionServiceResult()
                                        {
                                            Success = true, Code = Code.Success, Data = exam
                                        });
                                    }
                                    else
                                    {
                                        return(new ActionServiceResult()
                                        {
                                            Success = true, Code = Code.IsDoing, Data = null
                                        });
                                    }
                                }
                                else
                                {
                                    exam.IsDoing      = 1;
                                    exam.CreatedDate  = Utils.GetNistTime();
                                    exam.ModifiedDate = Utils.GetNistTime();
                                    await _baseEntityService.Update(exam);
                                }
                            }
                            else
                            {
                                exam.IsDoing = null;
                                exam.Result  = null;
                                exam.Status  = null;
                            }
                        }
                        else
                        {
                            //Tinh diem
                            exam.Point  = Utils.TinhDiem(exam.Result, exam.Answer);
                            exam.Status = 1;
                            await _baseEntityService.Update(exam);

                            return(new ActionServiceResult()
                            {
                                Success = true, Code = Code.Success, Data = exam
                            });
                        }
                    }

                    return(new ActionServiceResult()
                    {
                        Success = true, Code = Code.Success, Data = exam
                    });
                }
            }
            return(new ActionServiceResult());
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Kiểm tra màn hình sau click vào kì thì sẽ là bắt đầu , tiếp tục hay thống kê
        /// </summary>
        /// <param name="termID"></param>
        /// <param name="indexPage"></param>
        /// <param name="sizePage"></param>
        /// <param name="keyword"></param>
        /// <returns></returns>
        public async Task <ActionServiceResult> CheckScreen(string userID, string contestID)
        {
            var res    = new ActionServiceResult();
            var result = await _contestBaseRepository.GetEntityByIdAsync(contestID);

            if (result == null)
            {
                return(null);
            }
            else
            {
                var user = await _userBaseRepository.GetEntityByIdAsync(userID);

                if (user == null)
                {
                    return(null);
                }

                var roleName = string.IsNullOrEmpty(_role.GetValueOrDefault(user.RoleId.ToString())) ? "student" : _role.GetValueOrDefault(user.RoleId.ToString());

                var contestDTO = new ContestDTO();
                var exams      = _examBaseRepository.GetEntitites("Proc_GetExamByContestID", new object[] { contestID }).Result.ToList();
                var exam       = exams.Where(item => item.UserId == Guid.Parse(userID)).FirstOrDefault();

                if (roleName.Equals("student"))
                {
                    if (DateTime.Compare(Utils.GetNistTime(), result.StartTime) < 0)
                    {
                        //Tao de thi
                        if (exam == null)
                        {
                            var exam_new = await _examService.CreateExam(contestID, userID);

                            await _examBaseRepository.AddAsync(exam_new, true);

                            exam = exam_new;
                        }

                        return(new ActionServiceResult(true, "Chưa đến thời gian làm bài", Code.NotTimeToDo, exam.ExamId, 0));
                    }

                    else if (DateTime.Compare(Utils.GetNistTime(), result.FinishTime) > 0)
                    {
                        if (exam == null)
                        {
                            var exam_new = await _examService.CreateExam(contestID, userID);

                            exam_new.Status      = 1;
                            exam_new.Point       = 0;
                            exam_new.CreatedDate = exam_new.ModifiedDate = Utils.GetNistTime();
                            await _examBaseRepository.AddAsync(exam_new, true);

                            contestDTO.ExamID = exam_new.ExamId;
                        }
                        else
                        {
                            contestDTO.ExamID = exam.ExamId;
                        }
                        contestDTO.Continue = 2;
                        return(new ActionServiceResult(true, "Đã hết thời gian làm bài", Code.TimeOut, contestDTO, 0));
                    }
                    else
                    {
                        if (exam == null)
                        {
                            contestDTO.Continue = 0;
                            var exam_new = await _examService.CreateExam(contestID, userID);

                            await _examBaseRepository.AddAsync(exam_new, true);

                            contestDTO.ExamID = exam_new.ExamId;
                            //Tao bai thi
                        }
                        else
                        {
                            contestDTO.ExamID = exam.ExamId;
                            if (exam.IsDoing == 1 && DateTime.Compare(Utils.GetNistTime(), exam.ModifiedDate.Value) > 0 && exam.Status == 0)
                            {
                                contestDTO.Continue = 1;
                            }
                            if (exam.Status == 1)
                            {
                                contestDTO.Continue = 2;
                            }
                        }
                    }

                    res.Data = contestDTO;
                }
                else
                {
                    if (DateTime.Compare(Utils.GetNistTime(), result.FinishTime) < 0)
                    {
                        var data = new
                        {
                            NumOfJoining = exams.Count(item => item.IsDoing == 1)
                        };
                        return(new ActionServiceResult(true, "Đang trong thời gian làm bài", (Code)1001, data, 0));
                    }
                    else
                    {
                        return(new ActionServiceResult(true, "", (Code)1001, exams, 0));
                    }
                }
            }

            return(res);
        }
Ejemplo n.º 23
0
        public async Task <ActionServiceResult> SubmitExam(Examination exam)
        {
            StringValues userHeader;

            Request.Headers.TryGetValue("UserID", out userHeader);
            var userID = userHeader.FirstOrDefault().ToString();
            var result = new ActionServiceResult();

            if (userID == null || string.IsNullOrEmpty(userID) || exam == null)
            {
                result.Success = false;
                result.Code    = Code.NotFound;
                return(result);
            }

            var contest = await _contestRepo.GetEntityByIdAsync(exam.ContestId);

            var oldExam = await _baseEntityService.GetEntityById(exam.ExamId);

            if (contest == null || oldExam == null)
            {
                return(new ActionServiceResult
                {
                    Code = Code.Exception,
                    Data = null,
                    Message = "Entity null",
                    Success = false
                });
            }
            exam.Question     = oldExam.Question;
            exam.Answer       = oldExam.Answer;
            exam.CreatedDate  = oldExam.CreatedDate;
            exam.ModifiedDate = DateTime.Now;
            exam.StartAgain   = oldExam.StartAgain;


            if (oldExam != null && oldExam.Status == 1)
            {
                return(new ActionServiceResult()
                {
                    Success = false,
                    Code = Code.SubmitDone,
                    Message = "Hệ thống đã ghi nhận bài làm trước đó",
                    Data = new
                    {
                        Point = oldExam.Point,
                        ExamID = exam.ExamId
                    }
                });
            }
            if (DateTime.Compare(Utils.GetNistTime(), contest.FinishTime) <= 0)
            {
                var totaltimes = oldExam.TimeUsing;

                totaltimes += ((DateTime.Now - oldExam.ModifiedDate.Value).TotalSeconds / 60.0);

                exam.TimeUsing = totaltimes;


                //Con thoi gian lam bai
                if (totaltimes < contest.TimeToDo)
                {
                    if (exam.Status == 0)
                    {
                        exam.Point = Utils.TinhDiem(exam.Result, oldExam.Answer);
                        //tinh diem
                        var message = JsonConvert.SerializeObject(exam);
                        using (var producer = new ProducerWrapper <Null, string>(_producerConfig, "autosubmit"))
                        {
                            await producer.SendMessage(message);
                        }

                        return(new ActionServiceResult()
                        {
                            Success = true,
                            Code = Code.Success,
                            Message = Resources.Success,
                            Data = new
                            {
                                ExamID = exam.ExamId,
                                Point = exam.Point
                            }
                        });
                    }
                    else
                    {
                        exam.Point = Utils.TinhDiem(exam.Result, oldExam.Answer);
                        //tinh diem
                        await _baseEntityService.Update(exam);

                        return(new ActionServiceResult()
                        {
                            Success = true,
                            Code = Code.Success,
                            Message = Resources.Success,
                            Data = new
                            {
                                ExamID = exam.ExamId,
                                Point = exam.Point
                            }
                        });
                    }
                }
                //Vua het thoio gian lam bai
                else if (totaltimes == contest.TimeToDo)
                {
                    exam.Status = 1;
                    //tinh diem
                    exam.Point = Utils.TinhDiem(exam.Result, oldExam.Answer);
                    await _baseEntityService.Update(exam);

                    return(new ActionServiceResult()
                    {
                        Success = true,
                        Code = Code.Success,
                        Message = Resources.Success,
                        Data = new
                        {
                            ExamID = exam.ExamId,
                            Point = exam.Point
                        }
                    });
                }
                //Het thoi gian lam bai
                else
                {
                    exam.Status = 1;
                    //exam.Point = oldExam.Point;
                    exam.Point = Utils.TinhDiem(exam.Result, oldExam.Answer);
                    await _baseEntityService.Update(exam);

                    return(new ActionServiceResult()
                    {
                        Success = true,
                        Code = Code.Success,
                        Message = Resources.Success,
                        Data = new
                        {
                            ExamID = exam.ExamId,
                            Point = exam.Point
                        }
                    });
                }
            }
            exam.Point = Utils.TinhDiem(exam.Result, oldExam.Answer);;
            //Tinh diem oldexam
            return(new ActionServiceResult
            {
                Code = Code.TimeOut,
                Data = new
                {
                    ExamID = exam.ExamId,
                    Point = oldExam.Point
                },
                Message = "Hết thời gian làm bài",
                Success = false
            });
        }
        public async Task <ActionServiceResult> GetTranscript(string contestID)
        {
            StringValues clientIDHeader;

            Request.Headers.TryGetValue("ClientID", out clientIDHeader);
            var clientID = clientIDHeader.FirstOrDefault().ToString();

            var result = new ActionServiceResult();

            Console.WriteLine();
            if (clientID == null || clientID.Trim() != "714b320c-1046-4e37-a3c3-20bc6fcac014" || String.IsNullOrEmpty(clientID))
            {
                return(new ActionServiceResult()
                {
                    Success = false,
                    Code = Code.ValidateEntity,
                    Message = "Đầu vào dữ liệu không hợp lệ"
                });
            }
            else
            {
                try
                {
                    var contest = await _baseContestService.GetEntityById(contestID);


                    if (contest == null)
                    {
                        return(new ActionServiceResult()
                        {
                            Success = false,
                            Code = Code.ValidateEntity,
                            Message = "Không tồn tại kì thi"
                        });
                    }
                    else
                    {
                        var response = await _baseTranscriptRepo.GetEntitites("Proc_GetTranscriptsByContestID", new object[] { contestID });

                        if (response == null)
                        {
                            return new ActionServiceResult()
                                   {
                                       Code    = Code.Exception,
                                       Success = false,
                                       Data    = null
                                   }
                        }
                        ;
                        else
                        {
                            var tmp = _mapper.Map <List <IntegrationTranscript> >(response);

                            var data = new
                            {
                                Contest = new
                                {
                                    ContestName = contest.ContestName,

                                    StartTime = contest.StartTime,

                                    TimeToDo = contest.TimeToDo,

                                    FinishTime = contest.FinishTime
                                },
                                Data = tmp
                            };
                            result.Data = data;
                        }
                    }
                }
                catch (Exception)
                {
                    return(new ActionServiceResult()
                    {
                        Code = Code.Exception,
                        Success = false,
                        Data = null
                    });
                }
            }

            return(result);
        }