Exemple #1
0
        public ExamResponse GetAllIndexResult(ExamRequest request, StringComparison comparisonType)
        {
            if (string.IsNullOrEmpty(request.Text))
            {
                throw new ArgumentNullException("Text is empty");
            }
            if (string.IsNullOrEmpty(request.Subtext))
            {
                throw new ArgumentNullException("Subtext is empty");
            }
            if (request.Subtext.Length > request.Text.Length)
            {
                throw new ArgumentNullException("Subtext is longer than text");
            }

            IList <int> resultIndex = new List <int>();
            int         index       = request.Text.IndexOf(request.Subtext, comparisonType);

            while (index != -1)
            {
                resultIndex.Add(index);
                index = request.Text.IndexOf(request.Subtext, index + 1, comparisonType);
            }
            return(new ExamResponse {
                Result = string.Join(",", resultIndex)
            });
        }
Exemple #2
0
        public static Exam ProjectTo(this ExamRequest request, IMapper mapper)
        {
            Exam ex = mapper.Map <Exam>(request);

            ex.DateCreated = DateTime.Now;
            return(ex);
        }
        public async Task <ExamRequest> SaveAsync <V>(int userId, ExamRequest examRequest) where V : AbstractValidator <ExamRequest>
        {
            var currentUser = await _userService.FindByIdAsync(userId);

            if (currentUser.Medic == null)
            {
                Notify("Current user doesn't have permission to peform a exam request");
                return(null);
            }

            Patient patient = await _patientService.FindByIdAsync(examRequest.Patient.Id);

            if (patient == null)
            {
                Notify("Unable to find patient to peform a exam request");
                return(null);
            }

            examRequest.Patient   = patient;
            examRequest.MedicId   = currentUser.Medic.Id;
            examRequest.PatientId = patient.Id;
            examRequest.Medic     = currentUser.Medic;

            if (!Validate(Activator.CreateInstance <ExamRequestValidator>(), examRequest))
            {
                return(null);
            }

            await _examRequestRepository.InsertAsync(examRequest);

            await _unitOfWork.CompleteAsync();

            return(examRequest);
        }
Exemple #4
0
        [InlineData("sample", "SampleMe")] // text length greater than subtext
        public void StringSearch_ThrowsArgumentException(string valueText, string valueSubtext)
        {
            var request = new ExamRequest {
                Text = valueText, Subtext = valueSubtext
            };
            var service = ServiceGenerator.GetService();

            Assert.Throws <ArgumentNullException>(() => service.GetAllIndexResult(request, StringComparison.OrdinalIgnoreCase));
        }
        public IActionResult Update([FromBody] ExamRequest examRequest)
        {
            Exam exam = Mapper.Map <Exam>(examRequest);

            Exam updated = _examManager.UpdateExam(exam);

            ExamResponse response = Mapper.Map <Exam, ExamResponse>(updated);

            return(Ok(response));
        }
Exemple #6
0
        public void Post_ReturnsOk()
        {
            var req         = new ExamRequest();
            var mockService = MockServiceGenerator.GetMockTextService();
            var controller  = ControllerGenerator.GetTextController(mockService.Object);
            var response    = controller.Post(req);
            var result      = response as OkObjectResult;

            Assert.NotNull(result);
            Assert.Equal(200, result.StatusCode);
        }
Exemple #7
0
        public void StringSearch_ReturnsListInt(string valueText, string valueSubtext, string valueResult)
        {
            var service = ServiceGenerator.GetService();
            var request = new ExamRequest {
                Text = valueText, Subtext = valueSubtext
            };
            var result = service.GetAllIndexResult(request, StringComparison.OrdinalIgnoreCase);

            Assert.NotNull(result);
            Assert.Equal(result.Result, valueResult);
        }
        public async override Task AddAsync(object request)
        {
            if (!(request is ExamRequest))
            {
                throw new Exception("Convert type not allowed");
            }

            ExamRequest rq = (ExamRequest)request;
            var         ex = rq.ProjectTo(_mapper);

            await _repository.AddOrUpdateAsync(ex);
        }
        public object CreateEr(ExamRequest er)
        {
            var exam = uow.ExamRepository.Get(e => e.id == er.examId, includeProperties: "Requests").FirstOrDefault();

            if (exam != null)
            {
                er.dateApplied = DateTime.UtcNow;
                exam.Requests.Add(er);
                uow.Save();
            }
            return(GetUIObject(exam));
        }
Exemple #10
0
        public void Post_ModelStateInvalid_ReturnsBadRequest()
        {
            var req         = new ExamRequest();
            var mockService = MockServiceGenerator.GetMockTextService();
            var controller  = ControllerGenerator.GetTextController(mockService.Object);

            controller.ModelState.AddModelError("key", "error message");
            var response = controller.Post(req);
            var result   = response as BadRequestObjectResult;

            Assert.NotNull(result);
            Assert.Equal(400, result.StatusCode);
        }
Exemple #11
0
        public void Post_ArgumentException_ReturnsBadRequest()
        {
            var req         = new ExamRequest();
            var mockService = MockServiceGenerator.GetMockTextService();
            var controller  = ControllerGenerator.GetTextController(mockService.Object);

            mockService.Setup(i => i.GetAllIndexResult(It.IsAny <ExamRequest>(), StringComparison.OrdinalIgnoreCase))
            .Throws <ArgumentException>();

            var response = controller.Post(req);
            var result   = response as BadRequestObjectResult;

            Assert.NotNull(result);
            Assert.Equal(400, result.StatusCode);
        }
        public IActionResult Create(ExamRequest examRequest)
        {
            Exam exam = Mapper.Map <Exam>(examRequest);

            Exam examResult = _examManager.AddExam(exam);

            if (examResult == null)
            {
                return(BadRequest());
            }

            ExamResponse response = Mapper.Map <ExamResponse>(examResult);

            return(Ok(response));
        }
        public object UpdateEr(ExamRequest er)
        {
            var exam = uow.ExamRepository.Get(e => e.id == er.examId, includeProperties: "Requests").FirstOrDefault();

            if (exam != null)
            {
                var req = exam.Requests.FirstOrDefault(re => re.requestId == er.requestId);
                if (req != null)
                {
                    uow.CopyValues(req, er);
                }
                uow.Save();
            }
            return(GetUIObject(exam));
        }
        public async Task <IActionResult> AddExamAsync([FromBody] ExamRequest examRequest)
        {
            ExamResponse examResponse = new ExamResponse();

            try
            {
                User user = await examRequest.GetRequestedUserAsync(_dbContext);

                Exam exam = examRequest.Exam;
                exam.Marks          = 0F;
                exam.LecturerUserId = user.Id;

                if (exam.Questions != null)
                {
                    foreach (Question q in exam.Questions)
                    {
                        if (q == null)
                        {
                            continue;
                        }

                        exam.Marks += q.Marks;
                    }
                }

                await _dbContext.Exams.AddAsync(exam);

                await _dbContext.SaveChangesAsync();

                examResponse.Exams = new List <Exam>()
                {
                    await _dbContext.Exams
                    .Include(e => e.LecturerUser)
                    .Include(e => e.Questions)
                    .SingleOrDefaultAsync(e => e.Id == exam.Id)
                };

                examResponse.IsSuccess = true;
            }
            catch (Exception ex)
            {
                examResponse.Message = ex.Message;
            }

            return(StatusCode(examResponse.Status, examResponse));
        }
        public async Task <IActionResult> UpdateExamAsync([FromBody] ExamRequest examRequest)
        {
            ExamResponse examResponse = new ExamResponse();

            try
            {
                User user = await examRequest.GetRequestedUserAsync(_dbContext);

                Exam updatedExam = examRequest.Exam;
                updatedExam.LecturerUserId = user.Id;

                Exam exam = await _dbContext.Exams
                            .FirstOrDefaultAsync(e => e.Id == updatedExam.Id);

                if (exam == null)
                {
                    throw new Exception("Exam not found");
                }

                exam.Name              = updatedExam.Name;
                exam.Description       = updatedExam.Description;
                exam.GivenTimeSeconds  = updatedExam.GivenTimeSeconds;
                exam.IsPublish         = updatedExam.IsPublish;
                exam.EffectiveDateTime = updatedExam.EffectiveDateTime;
                exam.ExpireDateTime    = updatedExam.ExpireDateTime;

                await _dbContext.SaveChangesAsync();

                examResponse.Exams = new List <Exam>()
                {
                    await _dbContext.Exams
                    .Include(e => e.LecturerUser)
                    .Include(e => e.Questions)
                    .SingleOrDefaultAsync(e => e.Id == exam.Id)
                };

                examResponse.IsSuccess = true;
            }
            catch (Exception ex)
            {
                examResponse.Message = ex.Message;
            }

            return(StatusCode(examResponse.Status, examResponse));
        }
        public async override Task UpdateAsync(object request)
        {
            if (!(request is ExamRequest))
            {
                throw new Exception("Convert type not allowed");
            }

            ExamRequest req = (ExamRequest)request;
            Exam        ex  = await _repository.GetByIdAsync(req.Id);

            if (ex == null)
            {
                throw new Exception("Exam not found");
            }

            req.ProjectTo(ex);

            await _repository.AddOrUpdateAsync(ex);
        }
        public async Task <IActionResult> Delete(int examRequestId)
        {
            var userId = HttpContext.User.Claims.First()?.Value;

            try
            {
                ExamRequest examRequest = await _examRequestService.DeleteAsync(int.Parse(userId), examRequestId);

                if (examRequest == null)
                {
                    return(CustomResponse(statusCode: StatusCodes.Status404NotFound));
                }

                return(Ok());
            }
            catch (Exception e)
            {
                return(Unauthorized(e.Message));
            }
        }
        public async Task <IHttpActionResult> UpdateExam([FromBody] ExamRequest request)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    await _service.UpdateAsync(request);

                    await _service.CommitAsync();

                    return(Ok());
                }
                return(BadRequest(ModelState));
            }
            catch (Exception ex)
            {
                await _service.RollbackAsync();

                return(BadRequest(GetError(ex)));
            }
        }
        public async Task <ExamRequest> DeleteAsync(int userId, int examRequestId)
        {
            var currentUser = await _userService.FindByIdAsync(userId);

            if (currentUser.Medic == null)
            {
                throw new UnauthorizedAccessException("Apenas médicos podem cancelar pedidos de exames");
            }

            ExamRequest examRequest = await FindByIdAsync(examRequestId);

            if (examRequest == null)
            {
                Notify($"Unable to locate Exam with current ID {examRequestId}");
                return(null);
            }

            await _examRequestRepository.RemoveAsync(examRequest.Id);

            await _unitOfWork.CompleteAsync();

            return(examRequest);
        }
        public async Task <ExamRequest> SaveAsync <V>(ExamRequest examRequest) where V : AbstractValidator <ExamRequest>
        {
            await _examRequestRepository.InsertAsync(examRequest);

            return(examRequest);
        }
Exemple #21
0
 public static void ProjectTo(this ExamRequest request, Exam exam)
 {
     exam.Name = request.Name;
 }
 public void CreateExamRequest(ExamRequest examRequest)
 {
     this._examRequests.Add(examRequest);
     this._examRequests.SaveChanges();
 }
        public object Apply(int examId)
        {
            var userid = CurrentUser.id;

            var exam = uow.ExamRepository.Get(e => e.id == examId, includeProperties: "Requests").FirstOrDefault();

            if (exam != null)
            {
                var existing = uow.ExamRepository.Get(e => e.Requests.Any(r => r.Request.statusId != RequestStatus.PassedExam && r.Request.courseId == exam.courseId &&
                                                                          r.Request.createdById == userid && (r.dateCancelled == null || r.dateApplied > r.dateCancelled)),
                                                      includeProperties: "Requests.Request").ToList();
                if (existing.Count > 0 && existing.Count(e => e.id != examId) > 0)
                {
                    return(new HttpResponseMessage {
                        StatusCode = HttpStatusCode.BadRequest, Content = new StringContent("Već ste prijavljeni na drugi ispit iz ovog predmeta.")
                    });
                }
                var request = uow.RequestRepository.Get(r => r.createdById == CurrentUser.id && r.courseId == exam.courseId && r.statusId == RequestStatus.CodeApprovedPendingExam, includeProperties: "Course").FirstOrDefault();
                if (request != null)
                {
                    request.statusId = RequestStatus.ExamTimeSlotDecided;

                    var er = exam.Requests.FirstOrDefault(r => r.requestId == request.id);
                    if (er == null)
                    {
                        er = new ExamRequest {
                            examId = examId, requestId = request.id, dateApplied = DateTime.UtcNow
                        };
                        exam.Requests.Add(er);
                    }
                    else
                    {
                        er.dateApplied = DateTime.UtcNow;
                    }

                    var log = new RequestLog
                    {
                        createdById     = CurrentUser.id,
                        dateCreated     = DateTime.UtcNow,
                        requestId       = request.id,
                        requestStatusId = request.statusId,
                        Description     = $"Korisnik {CurrentUser.name} {CurrentUser.surname} je prijavio obranu iz predmeta {request.Course.name}. Datum obrane: {Utilities.GetUserTime(exam.examDateTime)?.ToString("dd.MM.yyyy HH:mm")}",
                        requestChanged  = true
                    };
                    uow.RequestLogRepository.Insert(log);
                    uow.Save();
                    uow.RequestRepository.LoadReference(request, "Status");
                    request.examDateTime = exam.examDateTime;
                    log.CreatedBy        = CurrentUser;
                    log.Request          = request;
                    SendMailForRequest(request, $"Prijavljena obrana - {CurrentUser.name} {CurrentUser.surname} - {request.Course.shortname}",
                                       log.Description);
                    return(new
                    {
                        exam = GetUIObject(exam),
                        log = RequestController.GetLogUIObject(log)
                    });
                }
            }
            return(null);
        }
        public async Task <ExamRequest> UpdateAsync <V>(ExamRequest examRequest) where V : AbstractValidator <ExamRequest>
        {
            var existingExamRequest = await _examRequestRepository.FindByIdAsync(examRequest.Id);

            return(_examRequestRepository.Update(examRequest));
        }