/// <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); }
/// <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); }
/// <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); }
/// <summary> /// Remove employee data /// </summary> /// <param name="request"></param> /// <returns></returns> public DoctorResponse RemoveData(DoctorRequest request) { return(RemoveData(request, true)); }
/// <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); }
/// <summary> /// Get list data /// </summary> /// <param name="request"></param> /// <returns></returns> public DoctorResponse GetListData(DoctorRequest request) { return(GetListData(request, true)); }
/// <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); }