예제 #1
0
        private LoketResponse ValidateBeforeCall(LoketRequest request)
        {
            var response = new LoketResponse();

            if (request.CallRequest.PoliID <= 0)
            {
                errorFields.Add("Poli ID");
            }
            if (string.IsNullOrEmpty(request.CallRequest.QueueCode))
            {
                errorFields.Add("Queue Code");
            }
            if (request.CallRequest.SortNumber <= 0)
            {
                errorFields.Add("Sort Number");
            }

            if (errorFields.Any())
            {
                response.Status  = false;
                response.Message = string.Format(Messages.ValidationErrorFields, String.Join(",", errorFields));
            }
            else
            {
                //response=
            }
            return(response);
        }
예제 #2
0
        /// <summary>
        /// Validate request
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        public LoketResponse Validate(LoketRequest request)
        {
            var response = new LoketResponse();

            if (request.Action != null)
            {
                if (request.Action.Equals(ClinicEnums.Action.DELETE.ToString()))
                {
                    response = ValidateForDelete(request);
                }
                else if (request.Action.Equals(ClinicEnums.Action.Process.ToString()))
                {
                    response = ValidateForProcess(request);
                }
                else if (request.Action.Equals(ClinicEnums.Action.Hold.ToString()))
                {
                    response = ValidateForHold(request);
                }
                else if (request.Action.Equals(ClinicEnums.Action.Finish.ToString()))
                {
                    response = ValidateForFinish(request);
                }
            }
            else
            {
                bool isHavePrivilege = true;

                if (request.Data.Id == 0)
                {
                    isHavePrivilege = IsHaveAuthorization(ADD_PRIVILEGE_NAME, request.Data.Account.Privileges.PrivilegeIDs);
                }
                else
                {
                    isHavePrivilege = IsHaveAuthorization(EDIT_PRIVILEGE_NAME, request.Data.Account.Privileges.PrivilegeIDs);
                }

                if (!isHavePrivilege)
                {
                    response.Status  = false;
                    response.Message = Messages.UnauthorizedAccess;
                }

                if (response.Status)
                {
                    response = new LoketHandler(_unitOfWork).CreateOrEdit(request);
                }
            }

            return(response);
        }
예제 #3
0
        public LoketResponse GetListData(LoketRequest request)
        {
            var _loketId = _unitOfWork.PoliRepository.GetFirstOrDefault(x => x.Name == Constants.NameConstant.Loket);
            Expression <Func <QueuePoli, bool> > _serachCriteria = x => x.PoliFrom == _loketId.ID;

            List <LoketModel> lists = base.GetbaseLoketData(request, _serachCriteria);
            int totalRequest        = lists.Count();
            var response            = new LoketResponse
            {
                Draw            = request.Draw,
                RecordsFiltered = totalRequest,
                RecordsTotal    = totalRequest,
                Data            = lists
            };

            return(response);
        }
예제 #4
0
        /// <summary>
        /// Process validation
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private LoketResponse ValidateForProcess(LoketRequest request)
        {
            var response = new LoketResponse();

            bool isHavePrivilege = IsHaveAuthorization(EDIT_PRIVILEGE_NAME, request.Data.Account.Privileges.PrivilegeIDs);

            if (!isHavePrivilege)
            {
                response.Status  = false;
                response.Message = Messages.UnauthorizedAccess;
            }

            if (response.Status)
            {
                response = new LoketHandler(_unitOfWork).ProcessRegistration(request);
            }

            return(response);
        }
예제 #5
0
        public List <LoketModel> GetbaseLoketData(LoketRequest request, Expression <Func <QueuePoli, bool> > searchCriteria = null)
        {
            List <LoketModel> lists = new List <LoketModel>();
            dynamic           qry   = null;
            var searchPredicate     = PredicateBuilder.New <QueuePoli>(true);

            searchPredicate = searchPredicate.And(searchCriteria);

            if (request.Data.PoliToID != 0)
            {
                searchPredicate = searchPredicate.And(p => p.PoliTo == request.Data.PoliToID);
            }

            if (request.Data.ClinicID != 0)
            {
                searchPredicate = searchPredicate.And(p => p.ClinicID == request.Data.ClinicID);
            }

            if (request.Data.Status != -1)
            {
                searchPredicate = searchPredicate.And(p => p.Status == request.Data.Status);
            }

            if (request.Data.strIsPreExamine != string.Empty)
            {
                bool _isAlreadyPreExamine = Convert.ToBoolean(request.Data.strIsPreExamine);
                searchPredicate = searchPredicate.And(p => p.IsPreExamine == _isAlreadyPreExamine);
            }

            if (!String.IsNullOrEmpty(request.SearchValue) && !String.IsNullOrWhiteSpace(request.SearchValue))
            {
                searchPredicate = searchPredicate.And(p => p.Patient.Name.Contains(request.SearchValue) ||
                                                      p.Doctor.Name.Contains(request.SearchValue) || p.Patient.MRNumber.Contains(request.SearchValue));
            }

            if (!(string.IsNullOrEmpty(request.SortColumn) && string.IsNullOrEmpty(request.SortColumnDir)))
            {
                if (request.SortColumnDir == "asc")
                {
                    switch (request.SortColumn.ToLower())
                    {
                    case "patientname":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Patient.Name));
                        break;

                    case "doctorstr":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Doctor.Name));
                        break;

                    case "transactiondatestr":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.TransactionDate));
                        break;

                    default:
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.ID));
                        break;
                    }
                }
                else
                {
                    switch (request.SortColumn.ToLower())
                    {
                    case "patientname":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Patient.Name));
                        break;

                    case "doctorstr":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Doctor.Name));
                        break;

                    case "transactiondatestr":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.TransactionDate));
                        break;

                    default:
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.ID));
                        break;
                    }
                }
            }
            else
            {
                qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, null);
            }

            foreach (var item in qry)
            {
                LoketModel lokmdl = Mapper.Map <QueuePoli, LoketModel>(item);
                if (item.Type == (int)RegistrationTypeEnum.MCU)
                {
                    lokmdl.SortNumberCode = "M-" + string.Format("{0:D3}", item.SortNumber);
                }
                else
                {
                    lokmdl.SortNumberCode = item.Poli1.Code.Trim() + "-" + string.Format("{0:D3}", item.SortNumber);
                }
                lists.Add(lokmdl);
            }
            DateTime _start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
            DateTime _end   = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);

            lists = lists.Where(x => x.TransactionDate >= _start && x.TransactionDate <= _end).ToList();
            int totalRequest = lists.Count();
            var data         = lists.Skip(request.Skip).Take(request.PageSize).ToList();

            return(data);
        }
예제 #6
0
        public List <LoketModel> GetFarmasiBaseLoketData(LoketRequest request, Expression <Func <QueuePoli, bool> > searchCriteria = null)
        {
            List <LoketModel> lists = new List <LoketModel>();
            dynamic           qry   = null;
            var searchPredicate     = PredicateBuilder.New <QueuePoli>(true);

            searchPredicate = searchPredicate.And(searchCriteria);

            if (request.Data.PoliToID != 0)
            {
                searchPredicate = searchPredicate.And(p => p.PoliTo == request.Data.PoliToID);
            }

            if (request.Data.ClinicID != 0)
            {
                searchPredicate = searchPredicate.And(p => p.ClinicID == request.Data.ClinicID);
            }

            if (!(string.IsNullOrEmpty(request.SortColumn) && string.IsNullOrEmpty(request.SortColumnDir)))
            {
                if (request.SortColumnDir == "asc")
                {
                    switch (request.SortColumn.ToLower())
                    {
                    case "patientname":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Patient.Name));
                        break;

                    case "doctorstr":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Doctor.Name));
                        break;

                    case "transactiondatestr":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.TransactionDate));
                        break;

                    default:
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.ID));
                        break;
                    }
                }
                else
                {
                    switch (request.SortColumn.ToLower())
                    {
                    case "patientname":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Patient.Name));
                        break;

                    case "doctorstr":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Doctor.Name));
                        break;

                    case "transactiondatestr":
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.TransactionDate));
                        break;

                    default:
                        qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.ID));
                        break;
                    }
                }
            }
            else
            {
                qry = _unitOfWork.RegistrationRepository.Get(searchPredicate, null);
            }

            foreach (var item in qry)
            {
                // original loket
                long       formMedicalID = ((QueuePoli)item).FormMedicalID.Value;
                QueuePoli  sourcePoli    = _unitOfWork.RegistrationRepository.GetFirstOrDefault(x => x.FormMedicalID == formMedicalID);
                LoketModel lokmdl        = Mapper.Map <QueuePoli, LoketModel>(item);
                if (sourcePoli != null && sourcePoli.DoctorID != null)
                {
                    lokmdl.DoctorID  = sourcePoli.DoctorID.Value;
                    lokmdl.DoctorStr = sourcePoli.Doctor != null ? sourcePoli.Doctor.Name : string.Empty;
                }

                if (item.Type == (int)RegistrationTypeEnum.MCU)
                {
                    lokmdl.SortNumberCode = "M-" + string.Format("{0:D3}", item.SortNumber);
                }
                else
                {
                    lokmdl.SortNumberCode = item.Poli1.Code.Trim() + "-" + string.Format("{0:D3}", item.SortNumber);
                }

                // modify the status
                lokmdl.StatusStr = ((PharmacyStatusEnum)lokmdl.Status).ToString();

                lists.Add(lokmdl);
            }
            DateTime _start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
            DateTime _end   = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);

            lists = lists.Where(x => x.TransactionDate >= _start && x.TransactionDate <= _end).ToList();
            int totalRequest = lists.Count();
            var data         = lists.Skip(request.Skip).Take(request.PageSize).ToList();

            return(data);
        }