/** Creates a new Claim Submitter object * @param theProvider the provider submitting the claim * @param theMember the member to whom the service was provided */ public ClaimSubmitter(Provider theProvider, Member theMember) { try { ui = new UserInterface(); services = new Services(); claims = new Claims(); services.open(); claims.open(); //get the service date DateTime serviceDate = ui.promptForDate ("Service Date (" + UserInterface.DATE_FORMAT + "): "); //get the correct service Service theService = null; bool correctCode = false; do { //get the service code String serviceCode = ui.promptForString("Service Code: "); theService = services.find(serviceCode); if (theService == null) { ui.errorMessage("Invalid code. Please re-enter."); } else { //confirm the service String answer = ui.promptForString("Service: " + theService.getName() + " \nIs this correct? (Y)es or (N)o: "); if (answer != null && answer.Length >= 1 && Char.ToUpper(answer[0]) == 'Y') { correctCode = true; } } } while (!correctCode); //Create new claim. The constructor initializes //the submission date and time with the system time. Claim aClaim = new Claim(theService.getCode(), theProvider.getNumber(), theMember.getNumber(), serviceDate); claims.add(aClaim); //Display success confirmation and service fee ui.message("Your claim has been submitted successfully."); ui.message("Service fee due to you: " + ui.formatAsCurrency(theService.getFee())); services.close(); claims.close(); } catch (Exception ex) { //File format is incorrect ui.errorMessage(ex.Message); } }//default constructor
/** Creates a new EFT report generator which creates a new * EFT report. * @param endDate a date within the week for which the report is to be * generated * @throws FileNotFoundException if the file cannot be created. */ public EFTReportGenerator(DateTime endDate) { Claims claims = null; Services services = null; Providers providers = null; //create a new EFT report report = new EFTReport(endDate); try { //create and open claims, services and providers collections claims = new Claims(); claims.open(); services = new Services(); services.open(); providers = new Providers(); providers.open(); //get all providers List <Person> allProviders = providers.getAll(); //for each provider foreach (Person person in allProviders) { double totalFee = 0; //accumulates fees payable to provider Provider provider = (Provider)person; //get all claims submitted by provider List <Claim> providerClaims = claims.findByProvider(provider.getNumber()); //for each claim foreach (Claim nextClaim in providerClaims) { //test whether claim is witin date range if (nextClaim.getSubmissionDate() > (report.getStartDateRange()) && nextClaim.getSubmissionDate() < (report.getEndDateRange())) { //get service fee double serviceFee; Service service = services.find(nextClaim.getServiceCode()); if (service == null) { throw new System.Exception("Invalid Code"); } else { serviceFee = service.getFee(); } //accumulate fees payable totalFee += serviceFee; } //if date in specified week } //for each claim if (totalFee > 0) { //add fees payable detail to report report.addDetail(provider.getNumber(), totalFee, provider.getName()); } } //for each provider } //try catch (Exception ex) { report.addErrorMessage(ex.Message); } finally { if (claims != null) { claims.close(); } if (providers != null) { providers.close(); } if (services != null) { services.close(); } } }//constructor