예제 #1
0
        /// <summary>
        /// Delete validation
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        private void ValidateForDelete(EmployeeRequest request, out EmployeeResponse response)
        {
            response = new EmployeeResponse();

            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 EmployeeHandler(_unitOfWork, _context).RemoveData(request);
            }
        }
예제 #2
0
        /// <summary>
        /// Validate request
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        public EmployeeResponse Validate(EmployeeRequest request, bool isFromApi = false)
        {
            bool isHavePrivilege = true;

            var response = new EmployeeResponse();

            if (request.Action != null && request.Action.Equals(ClinicEnums.Action.DELETE.ToString()))
            {
                ValidateForDelete(request, out response);
            }
            else
            {
                if (request.Data.EmpID == null || String.IsNullOrEmpty(request.Data.EmpID) || String.IsNullOrWhiteSpace(request.Data.EmpID))
                {
                    var cekEmpType = _unitOfWork.FamilyRelationshipRepository.GetById(request.Data.EmpType) == null ? "" : _unitOfWork.FamilyRelationshipRepository.GetById(request.Data.EmpType).Code;
                    if (cekEmpType.ToString().Trim() == "E")
                    {
                        errorFields.Add("Employee ID");
                    }
                }

                if (request.Data.EmpName == null || String.IsNullOrEmpty(request.Data.EmpName) || String.IsNullOrWhiteSpace(request.Data.EmpName))
                {
                    errorFields.Add("Employee Name");
                }

                if (request.Data.Birthdate == null)
                {
                    errorFields.Add("Birhdate");
                }

                if (request.Data.StartDate == null)
                {
                    errorFields.Add("Join Date");
                }

                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));
                }

                // skip the authorization for temporary
                if (!isFromApi)
                {
                    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 (isFromApi)
                {
                    errorFields = new List <string>();
                    if (!String.IsNullOrEmpty(request.Data.ReffEmpID))
                    {
                        var _nip = _context.Employees.SingleOrDefault(x => x.EmpID == request.Data.ReffEmpID && x.EmployeeStatu.Status != "F");
                        if (_nip == null)
                        {
                            errorFields.Add("Employee Reference");
                        }
                    }

                    var _type = _context.FamilyRelationships.SingleOrDefault(x => x.Code == request.Data.EmpTypeDesc);
                    if (_type == null)
                    {
                        errorFields.Add("Employee Type");
                    }

                    if (request.Data.EmpTypeDesc.ToLower() == Constants.Command.EmployeeRelationshipCode.ToLower())
                    {
                        var _status = _context.EmployeeStatus.SingleOrDefault(x => x.Code == request.Data.EmpStatusDesc);
                        if (_status == null)
                        {
                            errorFields.Add("Employee Status");
                        }
                    }

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

                if (response.Status)
                {
                    request.Data.IsFromAPI = isFromApi;
                    response = new EmployeeHandler(_unitOfWork, _context).CreateOrEdit(request);
                }
            }

            return(response);
        }