/// <summary> /// /// </summary> /// <param name="userId"></param> /// <param name="taxReturnData"></param> /// <returns></returns> public Tuple <long, bool> PersistTaxesAndWrapUpData(long userId, TaxReturnData taxReturnData) { Tuple <long, bool> userData = null; try { JTL.Tax1040.BusinessObject.Tax1040 taxObject; //Retrieving TaxObject from database taxObject = Utilities.GetTaxObjectByUserIdAndUserDataId(userId, taxReturnData.UserDataId); //28May2014 Sathish Creat person if person detail not updated. Used in federal tax and wrap up work flow for line 10 calc. if (taxObject == null || taxObject.PersonalDetails == null || taxObject.PersonalDetails.PrimaryTaxPayer == null) { if (taxObject == null) { taxObject = new BusinessObject.Tax1040() { PersonalDetails = new PersonalDetails() { PrimaryTaxPayer = new PrimaryTaxPayer() { FilingStatus = FilingStatus.Single, Person = new Person() } } } } ; if (taxObject.PersonalDetails == null) { taxObject.PersonalDetails = new PersonalDetails() { PrimaryTaxPayer = new PrimaryTaxPayer() { FilingStatus = FilingStatus.Single, Person = new Person() } }; } if (taxObject.PersonalDetails.PrimaryTaxPayer == null) { taxObject.PersonalDetails.PrimaryTaxPayer = new PrimaryTaxPayer() { FilingStatus = FilingStatus.Single, Person = new Person() }; } Tuple <long, bool> userDataId = personalInfoRepository.PersistPrimaryTaxPayer(taxObject.PersonalDetails.PrimaryTaxPayer, userId, taxReturnData.UserDataId, Constants.TOPIC_PERSONAL_FILINGSTATUS); taxReturnData.UserDataId = userDataId.Item1; //Retrieving TaxObject from database //26Aug2014 Sathish Get Tax object after personal info persist to get the error message list taxObject = Utilities.GetTaxObjectByUserIdAndUserDataId(userId, taxReturnData.UserDataId); } //Converting Json to OtherIncome by DeSerializing TaxesAndPenalties taxesAndPenalties = JsonConvert.DeserializeObject <TaxesAndPenalties>(taxReturnData.TaxData); if (taxObject != null && taxesAndPenalties != null) { taxObject.TaxesAndPenalties = new TaxesAndPenalties(); taxObject.TaxesAndPenalties = taxesAndPenalties; } if (taxObject.ErrorMessages == null) { taxObject.ErrorMessages = new List <ErrorMessage>(); } // Clear the Error messages exist for this topic. messageRepository.ClearErrorMessages(taxObject.ErrorMessages, Constants.TOPIC_TAX_AND_WRAPUP); //Workflow Validation Section dynamic input = new Microsoft.Activities.Extensions.WorkflowArguments(); input.Tax1040Object = taxObject; //var errorMessage = messageRepository.GetErrorMessages(); var errorMessage = HttpRuntime.Cache["ErrorMessageCollection"] as Dictionary <string, ErrorMessage>; var errorMessages = new ErrorMessages(errorMessage); input.ErrorMessages = errorMessages; //BusinessFieldValidations(otherIncome, taxObject.ErrorMessages, errorMessages); if (taxObject.TaxesAndPenalties != null) { var output = Microsoft.Activities.Extensions.WorkflowArguments.FromDictionary(WorkflowInvoker.Invoke(new TaxAndWrapUpEligibilityCheck(), input)); hasEligibilityDiagnostics = taxObject.ErrorMessages.Any(em => em.Topic == Constants.TOPIC_TAX_AND_WRAPUP && em.ErrorCode.StartsWith(Constants.TOPIC_TAX_AND_WRAPUP + "_ER")); taxObject.ErrorMessages.RemoveAll(em => em.ErrorCode == Constants.TAX_AND_WRAP_UP_REQUIRED_REFUND_DETAIL); taxObject.ErrorMessages.RemoveAll(em => em.ErrorCode == Constants.TAX_AND_WRAP_UP_MISSING_INCOME); dynamic federalSummaryInput = new Microsoft.Activities.Extensions.WorkflowArguments(); federalSummaryInput.Tax1040Object = taxObject; federalSummaryInput.IsTaxableIncomeExceedCheck = true; federalSummaryInput.IsRefundAvailableCheck = true; federalSummaryInput.IsIncomeAndRefundAllZeros = true; federalSummaryInput.ErrorMessages = errorMessages; output = Microsoft.Activities.Extensions.WorkflowArguments.FromDictionary( WorkflowInvoker.Invoke(new FederalSummaryWithNoValidation(), federalSummaryInput)); } BusinessValidation(taxObject.TaxesAndPenalties, taxObject.ErrorMessages, errorMessages); taxReturnData.UserDataId = Utilities.PersistTaxObject(userId, taxReturnData.UserDataId, taxObject); userData = new Tuple <long, bool>(taxReturnData.UserDataId, hasEligibilityDiagnostics); //vincent, 2-sep-14, Persist Audit information string description = "Persist TaxesAndWrapUpData, ClassName: {0}, Method Name: {1}"; Utilities.PersistAuditInfo(userId, taxReturnData.UserDataId, description, this.GetType().Name, Constants.Tab_TAX_AND_WRAPUP, Constants.TOPIC_TAX_AND_WRAPUP); } catch (Exception ex) { ExceptionHandling.LogException(userId, "Class:TaxesAndWrapUpRepository,Method Name:PersistTaxesAndWrapUpData", ex); } return(userData); }
//// 28May2014 Check Taxable income eligibility //public Tuple<string, bool> TaxableIncomeEligibilityCheck(UserDTO userDTO) //{ // Tuple<string, bool> taxableIncomeEligibility = null; // try // { // BusinessObject.Tax1040 taxObject = Utilities.GetTaxObjectByUserIdAndUserDataId(userDTO.UserId, userDTO.UserDataId); // if (taxObject != null) // { // dynamic input = new Microsoft.Activities.Extensions.WorkflowArguments(); // input.Tax1040Object = taxObject; // var output = Microsoft.Activities.Extensions.WorkflowArguments.FromDictionary( // WorkflowInvoker.Invoke(new FederalSummaryWithNoValidation(), input)); // hasEligibilityDiagnostics = HasEligibilityTaxIncome(userDTO, taxObject); // } // taxableIncomeEligibility = new Tuple<string, bool>(Utilities.GetTaxPayerFirstNameOrNickName(taxObject), hasEligibilityDiagnostics); // } // catch (Exception ex) // { // ExceptionHandling.LogException(userDTO.UserId, "Class:TaxesAndWrapUpRepository,Method Name:TaxableIncomeEligibilityCheck", ex); // } // return taxableIncomeEligibility; //} #endregion #region Validation public void BusinessValidation(TaxesAndPenalties taxesAndPenalties, List <ErrorMessage> errorMessageList, ErrorMessages errorMessages) { if (taxesAndPenalties != null) { ErrorMessage errorMessage; if (taxesAndPenalties.HasFiledForm4868.HasValue && taxesAndPenalties.HasFiledForm4868.Value) { errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( Convert.ToString(taxesAndPenalties.FederalExtensionFiledDate), Constants.TAX_AND_WRAP_UP_REQUIRED_EXTENSION_FILED_DATE, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } if (taxesAndPenalties.FederalExtensionFiledDate.HasValue && taxesAndPenalties.FederalExtensionFiledDate.Value != null) { errorMessage = BusinessValidationRepository.AssertDateIsLesser(taxesAndPenalties.FederalExtensionFiledDate.Value, DUE_DATE, Constants.TAX_AND_WRAP_UP_VALIDATION_EXTENSION_FILED_DATE, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } } if (taxesAndPenalties.HasPaidFederalExtensionWithForm4868.HasValue && taxesAndPenalties.HasPaidFederalExtensionWithForm4868.Value) { errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( Convert.ToString(taxesAndPenalties.FederalExtensionAmount), Constants.TAX_AND_WRAP_UP_EXTENSTION_AMOUNT, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( Convert.ToString(taxesAndPenalties.FederalExtensionAmountPaidDate), Constants.TAX_AND_WRAP_UP_EXTENSION_DATE, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } if (taxesAndPenalties.FederalExtensionAmountPaidDate.HasValue && taxesAndPenalties.FederalExtensionAmountPaidDate.Value != null) { errorMessage = BusinessValidationRepository.AssertDateIsLesser(taxesAndPenalties.FederalExtensionAmountPaidDate.Value, DUE_DATE, Constants.TAX_AND_WRAP_UP_VALIDATION_EXTENSION_DATE, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } } if (taxesAndPenalties.IsFilingReturnAfterDueDate.HasValue && taxesAndPenalties.IsFilingReturnAfterDueDate.Value) { errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( Convert.ToString(taxesAndPenalties.FilingDate), Constants.TAX_AND_WRAP_UP_FILING_DATE, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } if (taxesAndPenalties.FilingDate.HasValue && taxesAndPenalties.FilingDate.Value != null) { errorMessage = BusinessValidationRepository.AssertDateIsGreater(taxesAndPenalties.FilingDate.Value, DUE_DATE, Constants.TAX_AND_WRAP_UP_VALIDATION_FILED_DATE, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } } if (taxesAndPenalties.BankDetails != null) { errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( taxesAndPenalties.BankDetails.BankName, Constants.TAX_AND_WRAP_UP_BANK_NAME, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } else { errorMessage = BusinessValidationRepository.AssertIsNumbersLettersAndHyphen( taxesAndPenalties.BankDetails.BankName, Constants.TAX_AND_WRAP_UP_INVALID_BANK_NAME, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( taxesAndPenalties.BankDetails.RoutingTransitNumber, Constants.TAX_AND_WRAP_UP_ROUTING_NUMBER, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } else { errorMessage = BusinessValidationRepository.AssertIsValidRTN( taxesAndPenalties.BankDetails.RoutingTransitNumber, Constants.TAX_AND_WRAP_UP_ROUTING_NUMBER_VALIDATION, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( taxesAndPenalties.BankDetails.AccountNumber, Constants.TAX_AND_WRAP_UP_ACCOUNT_NUMBER, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } else { errorMessage = BusinessValidationRepository.AssertIsAccountNumber( taxesAndPenalties.BankDetails.AccountNumber, Constants.TAX_AND_WRAP_UP_ACCOUNT_NUMBER_VALIDATION, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } if (Utilities.ConvertToInteger32(taxesAndPenalties.BankDetails.BankAccountTypeCode) == 0) { if (taxesAndPenalties.BankDetails.BankAccountTypeCode != AccountType.Checking && taxesAndPenalties.BankDetails.BankAccountTypeCode != AccountType.Saving) { errorMessage = BusinessValidationRepository.AssertGreaterThanZero(Utilities.ConvertToDouble(taxesAndPenalties.BankDetails.BankAccountTypeCode), Constants.TAX_AND_WRAP_UP_TYPE_OF_ACCOUNT, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } } } if (taxesAndPenalties.ThirdPartyDesignee != null) { errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( taxesAndPenalties.ThirdPartyDesignee.DesigneeName, Constants.TAX_AND_WRAP_UP_DESIGNEE_NAME, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } else { errorMessage = BusinessValidationRepository.AssertIsNumbersLettersAndHyphen( taxesAndPenalties.ThirdPartyDesignee.DesigneeName, Constants.TAX_AND_WRAP_UP_INVALID_DESIGNEE_NAME, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( taxesAndPenalties.ThirdPartyDesignee.PIN, Constants.TAX_AND_WRAP_UP_DESIGNEE_PERSONAL_IDENTIFICATION_NUMBER, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } else { errorMessage = BusinessValidationRepository.AssertIsWithinRange( taxesAndPenalties.ThirdPartyDesignee.PIN, 5, 5, Constants.TAX_AND_WRAP_UP_INVALID_DESIGNEE_PERSONAL_IDENTIFICATION_NUMBER, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } errorMessage = BusinessValidationRepository.AssertIsNotNullOrEmpty( taxesAndPenalties.ThirdPartyDesignee.PhoneNumber, Constants.TAX_AND_WRAP_UP_DESIGNEE_PHONE_NO, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } else { errorMessage = BusinessValidationRepository.AssertIsWithinPhoneNoRange( taxesAndPenalties.ThirdPartyDesignee.PhoneNumber, 12, 12, Constants.TAX_AND_WRAP_UP_INVALID_DESIGNEE_PHONE_NUMBER, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } } if (!Utilities.IsStringEmpty(taxesAndPenalties.InCareOf)) { errorMessage = BusinessValidationRepository.AssertIsNumbersLettersAndHyphen( taxesAndPenalties.InCareOf, Constants.TAX_AND_WRAP_UP_INVALID_INCARE_OF, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } if (!Utilities.IsStringEmpty(taxesAndPenalties.InCareOfPhoneNumber)) { errorMessage = BusinessValidationRepository.AssertIsWithinPhoneNoRange( taxesAndPenalties.InCareOfPhoneNumber, 12, 12, Constants.TAX_AND_WRAP_UP_INVALID_INCARE_PHONE_NUMBER, errorMessages); if (errorMessage != null) { errorMessageList.Add(errorMessage); } } } }