home *** CD-ROM | disk | FTP | other *** search
/ Total C++ 2 / TOTALCTWO.iso / vfp5.0 / vfp / samples / csapp / bizrules.prg < prev    next >
Encoding:
Text File  |  1996-08-21  |  2.2 KB  |  84 lines

  1.  
  2. #DEFINE ERR_BADCOUNTRY_LOC        "The 'Country' value is invalid."
  3. #DEFINE ERR_BADHIREDATE_LOC        "The 'Hire_date' value must be greater than "
  4. #DEFINE ERR_BADBIRTHDATE_LOC    "The 'Birth_date' value must be greater than " 
  5. #DEFINE ERR_BADTITLE_LOC        "The 'Title' value is invalid."
  6. #DEFINE ERR_BADSALARY1_LOC        "The 'Salary' value for the job title '"
  7. #DEFINE ERR_BADSALARY2_LOC        "' must be between "
  8. #DEFINE ERR_BADSALARY3_LOC        "$"
  9. #DEFINE ERR_BADSALARY4_LOC        " and $"
  10.  
  11. DEFINE CLASS salaryrule AS Custom OLEPUBLIC
  12.  
  13.     nSaveArea = 1
  14.     
  15.     PROCEDURE Init
  16.         * BUGBUG needs error checking
  17.         IF !USED('bizrules')
  18.             USE bizrules IN 0 AGAIN
  19.         ENDIF
  20.     ENDPROC
  21.     
  22.     PROCEDURE Destroy
  23.         USE IN bizrules
  24.     ENDPROC
  25.  
  26.     PROCEDURE validate
  27.         PARAMETERS lcTitle, lnSalary, ldBirth, ldHire, lcCountry
  28.         LOCAL lcError, lcStr
  29.         
  30.         THIS.nSaveArea = SELECT()    
  31.         SELECT bizrules
  32.  
  33.         lcError = ""
  34.  
  35.         * enforces a common set of bussiness rules
  36.         * returns a list of error messages, one for every rule that failed
  37.  
  38.         * bussiness rule for title and for salary range per title
  39.         LOCATE FOR lcTitle = ALLTRIM(title)
  40.         IF EOF()
  41.             THIS.ErrorMessage(ERR_BADTITLE_LOC, @lcError)
  42.         ELSE
  43.             IF !BETWEEN(lnSalary, min_salary, max_salary)
  44.                 lcStr = ERR_BADSALARY1_LOC + ALLTRIM(title) + ERR_BADSALARY2_LOC + ;
  45.                         ERR_BADSALARY3_LOC + ALLTRIM(STR(min_salary)) + ERR_BADSALARY4_LOC + ALLTRIM(STR(max_salary))
  46.                 THIS.ErrorMessage(lcStr, @lcError)
  47.             ENDIF
  48.         ENDIF
  49.  
  50.         * bussiness rule for dates
  51.         GO TOP
  52.         IF ldBirth < birth_date
  53.             lcStr = ERR_BADBIRTHDATE_LOC + ALLTRIM(DTOC(birth_date))
  54.             THIS.ErrorMessage(lcStr, @lcError)
  55.         ENDIF
  56.  
  57.         GO TOP        && just for consistence
  58.         IF ldHire < hire_date
  59.             lcStr = ERR_BADHIREDATE_LOC + ALLTRIM(DTOC(hire_date))
  60.             THIS.ErrorMessage(lcStr, @lcError)
  61.         ENDIF
  62.  
  63.         * business rule for country
  64.         LOCATE FOR lcCountry = ALLTRIM(country)
  65.         IF EOF()
  66.             THIS.ErrorMessage(ERR_BADCOUNTRY_LOC, @lcError)
  67.         ENDIF
  68.  
  69.         SELECT (THIS.nSaveArea)
  70.     
  71.         * wait window lcError
  72.         RETURN lcError
  73.     ENDPROC
  74.  
  75.  
  76.     PROCEDURE ErrorMessage
  77.         PARAMETERS lcMessage, lcError
  78.         * add message to error list
  79.         lcError = lcError + IIF(EMPTY(lcError), lcMessage, chr(13) + lcMessage)
  80.         SELECT (THIS.nSaveArea)
  81.     ENDPROC
  82.  
  83. ENDDEFINE
  84.