/// <summary> /// Get lab item details /// </summary> /// <param name="request"></param> /// <returns></returns> public LabItemResponse GetDetail(LabItemRequest request) { LabItemResponse response = new LabItemResponse(); var qry = _unitOfWork.LabItemRepository.Query(x => x.ID == request.Data.Id, null); if (qry.FirstOrDefault() != null) { response.Entity = Mapper.Map <Klinik.Data.DataRepository.LabItem, LabItemModel>(qry.FirstOrDefault()); } return(response); }
/// <summary> /// Validate request /// </summary> /// <param name="request"></param> /// <param name="response"></param> public void Validate(LabItemRequest request, out LabItemResponse response) { response = new LabItemResponse(); if (request.Action != null && request.Action.Equals(ClinicEnums.Action.DELETE.ToString())) { ValidateForDelete(request, out response); } else { bool isHavePrivilege = true; if (request.Data.Name == null || String.IsNullOrWhiteSpace(request.Data.Name)) { errorFields.Add("LabItem Name"); } if (errorFields.Any()) { response.Status = false; response.Message = string.Format(Messages.ValidationErrorFields, String.Join(",", errorFields)); } 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 LabItemHandler(_unitOfWork).CreateOrEdit(request); } } }
/// <summary> /// Delete validation /// </summary> /// <param name="request"></param> /// <param name="response"></param> private void ValidateForDelete(LabItemRequest request, out LabItemResponse response) { response = new LabItemResponse(); if (request.Action == ClinicEnums.Action.DELETE.ToString()) { bool isHavePrivilege = IsHaveAuthorization(DELETE_PRIVILEGE_NAME, request.Data.Account.Privileges.PrivilegeIDs); if (!isHavePrivilege) { response.Status = false; response.Message = Messages.UnauthorizedAccess; } } if (response.Status) { response = new LabItemHandler(_unitOfWork).RemoveData(request); } }
/// <summary> /// Remove lab item data /// </summary> /// <param name="request"></param> /// <returns></returns> public LabItemResponse RemoveData(LabItemRequest request) { LabItemResponse response = new LabItemResponse(); try { var labItem = _unitOfWork.LabItemRepository.GetById(request.Data.Id); if (labItem.ID > 0) { labItem.RowStatus = -1; labItem.ModifiedBy = request.Data.Account.UserCode; labItem.ModifiedDate = DateTime.Now; _unitOfWork.LabItemRepository.Update(labItem); int resultAffected = _unitOfWork.Save(); if (resultAffected > 0) { response.Message = string.Format(Messages.ObjectHasBeenRemoved, "LabItem", labItem.Name, labItem.ID); } else { response.Status = false; response.Message = string.Format(Messages.RemoveObjectFailed, "LabItem"); } } else { response.Status = false; response.Message = string.Format(Messages.RemoveObjectFailed, "LabItem"); } } catch (Exception ex) { response.Status = false; response.Message = Messages.GeneralError; ErrorLog(ClinicEnums.Module.MASTER_LAB_ITEM, ClinicEnums.Action.DELETE.ToString(), request.Data.Account, ex); } return(response); }
/// <summary> /// Create or edit lab item /// </summary> /// <param name="request"></param> /// <returns></returns> public LabItemResponse CreateOrEdit(LabItemRequest request) { LabItemResponse response = new LabItemResponse(); try { if (request.Data.Id > 0) { var qry = _unitOfWork.LabItemRepository.GetById(request.Data.Id); if (qry != null) { // save the old data var _oldentity = Mapper.Map <Klinik.Data.DataRepository.LabItem, LabItemModel>(qry); qry.ModifiedBy = request.Data.Account.UserCode; qry.ModifiedDate = DateTime.Now; // update data qry.Code = request.Data.Code; qry.Name = request.Data.Name; qry.LabItemCategoryID = request.Data.LabItemCategoryID; qry.Normal = request.Data.Normal; qry.Price = request.Data.Price; _unitOfWork.LabItemRepository.Update(qry); int resultAffected = _unitOfWork.Save(); if (resultAffected > 0) { response.Message = string.Format(Messages.ObjectHasBeenUpdated, "LabItem", qry.Name, qry.ID); CommandLog(true, ClinicEnums.Module.MASTER_LAB_ITEM, Constants.Command.EDIT_LAB_ITEM, request.Data.Account, request.Data, _oldentity); } else { response.Status = false; response.Message = string.Format(Messages.UpdateObjectFailed, "LabItem"); CommandLog(false, ClinicEnums.Module.MASTER_LAB_ITEM, Constants.Command.EDIT_LAB_ITEM, request.Data.Account, request.Data, _oldentity); } } else { response.Status = false; response.Message = string.Format(Messages.UpdateObjectFailed, "LabItem"); CommandLog(false, ClinicEnums.Module.MASTER_LAB_ITEM, Constants.Command.EDIT_LAB_ITEM, request.Data.Account, request.Data); } } else { var labItemEntity = Mapper.Map <LabItemModel, Klinik.Data.DataRepository.LabItem>(request.Data); labItemEntity.CreatedBy = request.Data.Account.UserCode; labItemEntity.CreatedDate = DateTime.Now; _unitOfWork.LabItemRepository.Insert(labItemEntity); int resultAffected = _unitOfWork.Save(); if (resultAffected > 0) { response.Message = string.Format(Messages.ObjectHasBeenAdded, "LabItem", labItemEntity.Name, labItemEntity.ID); CommandLog(true, ClinicEnums.Module.MASTER_LAB_ITEM, Constants.Command.ADD_LAB_ITEM, request.Data.Account, request.Data); } else { response.Status = false; response.Message = string.Format(Messages.AddObjectFailed, "LabItem"); CommandLog(false, ClinicEnums.Module.MASTER_LAB_ITEM, Constants.Command.ADD_LAB_ITEM, request.Data.Account, request.Data); } } } catch (Exception ex) { response.Status = false; response.Message = Messages.GeneralError; if (request.Data != null && request.Data.Id > 0) { ErrorLog(ClinicEnums.Module.MASTER_LAB_ITEM, Constants.Command.EDIT_LAB_ITEM, request.Data.Account, ex); } else { ErrorLog(ClinicEnums.Module.MASTER_LAB_ITEM, Constants.Command.ADD_LAB_ITEM, request.Data.Account, ex); } } return(response); }
/// <summary> /// Get lab item list of data /// </summary> /// <param name="request"></param> /// <returns></returns> public LabItemResponse GetListData(LabItemRequest request, Expression <Func <Klinik.Data.DataRepository.LabItem, bool> > searchCriteria = null) { List <LabItemModel> lists = new List <LabItemModel>(); dynamic qry = null; var searchPredicate = PredicateBuilder.New <Klinik.Data.DataRepository.LabItem>(true); // add default filter to show the active data only searchPredicate = searchPredicate.And(x => x.RowStatus == 0); if (searchCriteria != null) { searchPredicate = searchPredicate.And(searchCriteria); } if (!String.IsNullOrEmpty(request.SearchValue) && !String.IsNullOrWhiteSpace(request.SearchValue)) { searchPredicate = searchPredicate.And(p => p.Name.Contains(request.SearchValue) || p.Code.Contains(request.SearchValue)); } if (!(string.IsNullOrEmpty(request.SortColumn) && string.IsNullOrEmpty(request.SortColumnDir))) { if (request.SortColumnDir == "asc") { switch (request.SortColumn.ToLower()) { case "name": qry = _unitOfWork.LabItemRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Name)); break; case "code": qry = _unitOfWork.LabItemRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Code)); break; case "price": qry = _unitOfWork.LabItemRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.Price)); break; default: qry = _unitOfWork.LabItemRepository.Get(searchPredicate, orderBy: q => q.OrderBy(x => x.ID)); break; } } else { switch (request.SortColumn.ToLower()) { case "name": qry = _unitOfWork.LabItemRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Name)); break; case "code": qry = _unitOfWork.LabItemRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Code)); break; case "price": qry = _unitOfWork.LabItemRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.Price)); break; default: qry = _unitOfWork.LabItemRepository.Get(searchPredicate, orderBy: q => q.OrderByDescending(x => x.ID)); break; } } } else { qry = _unitOfWork.LabItemRepository.Get(searchPredicate, null); } foreach (var item in qry) { var prData = Mapper.Map <Klinik.Data.DataRepository.LabItem, LabItemModel>(item); lists.Add(prData); } int totalRequest = lists.Count(); var data = lists.Skip(request.Skip).Take(request.PageSize).ToList(); var response = new LabItemResponse { Draw = request.Draw, RecordsFiltered = totalRequest, RecordsTotal = totalRequest, Data = data }; return(response); }