示例#1
0
        public ActionResult GetListLabItem()
        {
            var _draw          = Request.Form.GetValues("draw").FirstOrDefault();
            var _start         = Request.Form.GetValues("start").FirstOrDefault();
            var _length        = Request.Form.GetValues("length").FirstOrDefault();
            var _sortColumn    = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
            var _sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();
            var _searchValue   = Request.Form.GetValues("search[value]").FirstOrDefault();

            int _pageSize = _length != null?Convert.ToInt32(_length) : 0;

            int _skip = _start != null?Convert.ToInt32(_start) : 0;

            var request = new LabItemRequest
            {
                Draw          = _draw,
                SearchValue   = _searchValue,
                SortColumn    = _sortColumn,
                SortColumnDir = _sortColumnDir,
                PageSize      = _pageSize,
                Skip          = _skip,
            };


            Expression <Func <LabItem, bool> > _serachCriteria = x => x.LabItemCategory.LabType == Constants.NameConstant.Laboratorium;
            var response = new LabItemHandler(_unitOfWork).GetListData(request, _serachCriteria);

            return(Json(new { data = response.Data.OrderBy(x => x.LabItemCategoryID), recordsFiltered = response.RecordsFiltered, recordsTotal = response.RecordsTotal, draw = response.Draw }, JsonRequestBehavior.AllowGet));
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
                }
            }
        }
示例#4
0
        /// <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);
            }
        }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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);
        }
示例#7
0
        /// <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);
        }