コード例 #1
0
ファイル: DoctorHandler.cs プロジェクト: adityawa/KlinikMin
        /// <summary>
        /// Remove employee data
        /// </summary>
        /// <param name="request"></param>
        /// <param name="isDoctor"></param>
        /// <returns></returns>
        public DoctorResponse RemoveData(DoctorRequest request, bool isDoctor)
        {
            DoctorResponse response = new DoctorResponse();

            try
            {
                string type   = isDoctor ? Messages.Doctor : Messages.Paramedic;
                var    doctor = _unitOfWork.DoctorRepository.GetById(request.Data.Id);
                if (doctor.ID > 0)
                {
                    doctor.RowStatus    = -1;
                    doctor.ModifiedBy   = request.Data.Account.UserCode;
                    doctor.ModifiedDate = DateTime.Now;

                    _unitOfWork.DoctorRepository.Update(doctor);
                    int resultAffected = _unitOfWork.Save();
                    if (resultAffected > 0)
                    {
                        response.Message = string.Format(Messages.ObjectHasBeenRemoved, type, doctor.Name, doctor.Code);
                    }
                    else
                    {
                        response.Status  = false;
                        response.Message = string.Format(Messages.RemoveObjectFailed, type);
                    }
                }
                else
                {
                    response.Status  = false;
                    response.Message = string.Format(Messages.RemoveObjectFailed, type);
                }
            }
            catch (Exception ex)
            {
                response.Status  = false;
                response.Message = Messages.GeneralError;

                ErrorLog(ClinicEnums.Module.MASTER_DOCTOR, ClinicEnums.Action.DELETE.ToString(), request.Data.Account, ex);
            }

            return(response);
        }
コード例 #2
0
        /// <summary>
        /// Delete validation
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        private DoctorResponse ValidateForDelete(DoctorRequest request)
        {
            DoctorResponse response      = new DoctorResponse();
            string         privilegeName = request.Data.TypeID == 0 ? DELETE_PRIVILEGE_NAME : "DELETE_M_PARAMEDIC";

            if (request.Action == ClinicEnums.Action.DELETE.ToString())
            {
                bool isHavePrivilege = IsHaveAuthorization(privilegeName, request.Data.Account.Privileges.PrivilegeIDs);
                if (!isHavePrivilege)
                {
                    response.Status  = false;
                    response.Message = Messages.UnauthorizedAccess;
                }
            }

            if (response.Status)
            {
                response = new DoctorHandler(_unitOfWork).RemoveData(request, request.Data.TypeID == 0);
            }

            return(response);
        }
コード例 #3
0
ファイル: DoctorHandler.cs プロジェクト: adityawa/KlinikMin
        /// <summary>
        /// Create or edit a Doctor
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public DoctorResponse CreateOrEdit(DoctorRequest request)
        {
            DoctorResponse response = new DoctorResponse();

            try
            {
                string type = request.Data.TypeID == 0 ? Messages.Doctor : Messages.Paramedic;
                if (request.Data.Id > 0)
                {
                    var qry = _unitOfWork.DoctorRepository.GetById(request.Data.Id);
                    if (qry != null)
                    {
                        // save the old data
                        var _oldentity = Mapper.Map <Doctor, DoctorModel>(qry);

                        // update data
                        qry.Name         = request.Data.Name;
                        qry.Address      = request.Data.Address;
                        qry.KTPNumber    = request.Data.KTPNumber;
                        qry.STRNumber    = request.Data.STRNumber;
                        qry.STRValidFrom = request.Data.STRValidFrom;
                        qry.STRValidTo   = request.Data.STRValidTo;
                        qry.Email        = request.Data.Email;
                        qry.HPNumber     = request.Data.HPNumber;
                        qry.Remark       = request.Data.Remark;
                        qry.SpecialistID = request.Data.SpecialistID;
                        qry.TypeID       = request.Data.TypeID;
                        qry.ModifiedDate = DateTime.Now;
                        qry.ModifiedBy   = request.Data.ModifiedBy ?? "SYSTEM";

                        _unitOfWork.DoctorRepository.Update(qry);
                        int resultAffected = _unitOfWork.Save();
                        if (resultAffected > 0)
                        {
                            response.Message = string.Format(Messages.ObjectHasBeenUpdated, type, qry.Name, qry.Code);

                            CommandLog(true, ClinicEnums.Module.MASTER_DOCTOR, Constants.Command.EDIT_DOCTOR, request.Data.Account, request.Data, _oldentity);
                        }
                        else
                        {
                            response.Status  = false;
                            response.Message = string.Format(Messages.UpdateObjectFailed, type);

                            CommandLog(false, ClinicEnums.Module.MASTER_DOCTOR, Constants.Command.EDIT_DOCTOR, request.Data.Account, request.Data, _oldentity);
                        }
                    }
                    else
                    {
                        response.Status  = false;
                        response.Message = string.Format(Messages.UpdateObjectFailed, type);

                        CommandLog(false, ClinicEnums.Module.MASTER_DOCTOR, Constants.Command.EDIT_DOCTOR, request.Data.Account, request.Data);
                    }
                }
                else
                {
                    return(CreateDoctor(request.Data));
                }
            }
            catch (Exception ex)
            {
                response.Status  = false;
                response.Message = Messages.GeneralError;

                if (request.Data != null && request.Data.Id > 0)
                {
                    ErrorLog(ClinicEnums.Module.MASTER_DOCTOR, Constants.Command.EDIT_DOCTOR, request.Data.Account, ex);
                }
                else
                {
                    ErrorLog(ClinicEnums.Module.MASTER_DOCTOR, Constants.Command.ADD_NEW_DOCTOR, request.Data.Account, ex);
                }
            }

            return(response);
        }
コード例 #4
0
ファイル: DoctorHandler.cs プロジェクト: adityawa/KlinikMin
 /// <summary>
 /// Remove employee data
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public DoctorResponse RemoveData(DoctorRequest request)
 {
     return(RemoveData(request, true));
 }
コード例 #5
0
ファイル: DoctorHandler.cs プロジェクト: adityawa/KlinikMin
        /// <summary>
        /// Get employee list of data
        /// </summary>
        /// <param name="request"></param>
        /// <param name="isDoctor"></param>
        /// <returns></returns>
        public DoctorResponse GetListData(DoctorRequest request, bool isDoctor)
        {
            List <DoctorModel> lists = new List <DoctorModel>();
            dynamic            qry   = null;
            var searchPredicate      = PredicateBuilder.New <Doctor>(true);

            // add default filter to show doctor or paramedic list
            searchPredicate = searchPredicate.And(p => p.TypeID == (isDoctor ? 0 : 1) && p.RowStatus != -1);

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

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

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

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

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

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

            foreach (var item in qry)
            {
                DoctorModel doctorData = Mapper.Map <Doctor, DoctorModel>(item);
                doctorData.TypeName = isDoctor ? Messages.Doctor : Messages.Paramedic;

                if (isDoctor)
                {
                    var doctor = _unitOfWork.MasterRepository.GetFirstOrDefault(x => x.Value == doctorData.SpecialistID.ToString() && x.Type == ClinicEnums.MasterTypes.DoctorType.ToString());
                    if (doctor != null)
                    {
                        doctorData.SpecialistName = doctor.Name;
                    }
                }
                else
                {
                    var paramedic = _unitOfWork.MasterRepository.GetFirstOrDefault(x => x.Value == doctorData.SpecialistID.ToString() && x.Type == ClinicEnums.MasterTypes.ParamedicType.ToString());
                    if (paramedic != null)
                    {
                        doctorData.SpecialistName = paramedic.Name;
                    }
                }

                lists.Add(doctorData);
            }

            int totalRequest = lists.Count();
            var data         = lists.Skip(request.Skip).Take(request.PageSize).ToList();

            var response = new DoctorResponse
            {
                Draw            = request.Draw,
                RecordsFiltered = totalRequest,
                RecordsTotal    = totalRequest,
                Data            = data
            };

            return(response);
        }
コード例 #6
0
ファイル: DoctorHandler.cs プロジェクト: adityawa/KlinikMin
 /// <summary>
 /// Get list data
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public DoctorResponse GetListData(DoctorRequest request)
 {
     return(GetListData(request, true));
 }
コード例 #7
0
        /// <summary>
        /// Validate the request
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        public DoctorResponse Validate(DoctorRequest request)
        {
            DoctorResponse response = new DoctorResponse();

            if (request.Action != null && request.Action.Equals(ClinicEnums.Action.DELETE.ToString()))
            {
                response = ValidateForDelete(request);
            }
            else
            {
                bool isHavePrivilege = true;

                if (String.IsNullOrEmpty(request.Data.Code) || String.IsNullOrWhiteSpace(request.Data.Code))
                {
                    request.Data.Code = "D" + new Random().Next(1000, 9999);
                }

                if (request.Data.STRValidFrom != null && request.Data.STRValidTo != null)
                {
                    if (request.Data.STRValidTo < request.Data.STRValidFrom)
                    {
                        errorFields.Add(Messages.STRValidToInvalid);
                    }
                }

                if (String.IsNullOrEmpty(request.Data.Name) || String.IsNullOrWhiteSpace(request.Data.Name))
                {
                    errorFields.Add("Doctor Name");
                }

                if (!String.IsNullOrEmpty(request.Data.Email))
                {
                    if (!Regex.IsMatch(request.Data.Email, @"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$|^\+?\d{0,2}\-?\d{4,5}\-?\d{5,6}"))
                    {
                        errorFields.Add("Email");
                    }
                }

                if (errorFields.Any())
                {
                    response.Status  = false;
                    response.Message = string.Format(Messages.ValidationErrorFields, String.Join(",", errorFields));
                }

                if (request.Data.Id == 0)
                {
                    string privilegeName = request.Data.TypeID == 0 ? ADD_PRIVILEGE_NAME : "ADD_M_PARAMEDIC";

                    isHavePrivilege = IsHaveAuthorization(privilegeName, request.Data.Account.Privileges.PrivilegeIDs);
                }
                else
                {
                    string privilegeName = request.Data.TypeID == 0 ? EDIT_PRIVILEGE_NAME : "EDIT_M_PARAMEDIC";

                    isHavePrivilege = IsHaveAuthorization(privilegeName, request.Data.Account.Privileges.PrivilegeIDs);
                }

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

                if (response.Status)
                {
                    response = new DoctorHandler(_unitOfWork, _context).CreateOrEdit(request);
                }
            }

            return(response);
        }