public IHttpActionResult PostProcessRequestResult(long requestId) { Common.Context appContext = new Common.Context(RequestContext, Request); using (WebDataEntities webDataE = new WebDataEntities()) { Request requestObj = webDataE.Requests.Find(requestId); if (requestObj == null) { return(NotFound()); } bool success = false; switch (requestObj.RequestTypeId) { case (int)RequestTypes.NYCTaxBill: success = BAL.TaxBill.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCWaterBill: success = BAL.WaterBill.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCDOBPenaltiesAndViolations: success = BAL.DOBPenaltiesAndViolationsSummary.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCMortgageServicer: success = BAL.MortgageServicer.UpdateData(appContext, requestObj); break; case (int)RequestTypes.Zillow: success = BAL.Zillow.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCNoticeOfPropertyValue: success = BAL.NoticeOfPropertyValueDocument.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCMortgageDocumentDetails: success = BAL.MortgageDocument.UpdateData(appContext, requestObj); break; default: String msg = String.Format("Cannot process request - Invalid Request Type: {0} for Request Id {1}", requestObj.RequestTypeId, requestObj.RequestId); Common.Logs.log().Warn(msg); return(Common.HttpResponse.InternalError(Request, msg)); } if (!success) { return(Common.HttpResponse.InternalError(Request, "Internal Error in processing request")); } return(Ok(true)); } }
public void CheckIfRequestsProcessed() { Common.Context appContext = new Common.Context(RequestContext, Request); using (WebDataEntities webDataE = new WebDataEntities()) { List <DataRequestLog> requestLogList = DAL.DataRequestLog.GetAllUnprocessed(webDataE); if (requestLogList == null) { return; } foreach (var requestLogObj in requestLogList) { Request requestObj = webDataE.Requests.Find(requestLogObj.RequestId); if (requestObj == null) { continue; } switch (requestObj.RequestTypeId) { case (int)RequestTypes.NYCTaxBill: BAL.TaxBill.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCWaterBill: BAL.WaterBill.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCDOBPenaltiesAndViolations: BAL.DOBPenaltiesAndViolationsSummary.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCMortgageServicer: BAL.MortgageServicer.UpdateData(appContext, requestObj); break; case (int)RequestTypes.Zillow: BAL.Zillow.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCNoticeOfPropertyValue: BAL.NoticeOfPropertyValueDocument.UpdateData(appContext, requestObj); break; case (int)RequestTypes.NYCMortgageDocumentDetails: BAL.MortgageDocument.UpdateData(appContext, requestObj); break; default: Common.Logs.log().Warn(string.Format("Cannot process request - Invalid Request Type: {0} for Request Id {1}", requestObj.RequestTypeId, requestObj.RequestId)); break; } } } }
public static bool isAnyCallBack(Common.Context appContext) { switch (appContext.getUserName().ToLower()) { case "portal": return(true); default: return(false); } }
/// <summary> /// Method returns address corrections and details based on street number, street address and borough for NYC properties /// </summary> public static void PostCallBack(Common.Context appContext, BAL.Results result) { string username = appContext.getUserName().ToLower(); ApiDetails apiDetails = GetApiDetails(username); if (apiDetails == null) { return; } PostCallBack(apiDetails.baseURL, apiDetails.callbackapi, apiDetails.apiKey, username, result); }
/// <summary> /// This method calls back portal for every log record in the list /// </summary> private static void MakeCallBacks(Common.Context appContext, List <DataRequestLog> logs, bool?isFreddieMacMortgage) { if (!CallingSystem.isAnyCallBack(appContext)) { return; } var resultObj = new BAL.Results(); resultObj.freddieMacResult = new FreddieMortgageDetails(); resultObj.freddieMacResult.isFreddieMortgage = isFreddieMacMortgage; foreach (var rec in logs) { resultObj.mortgageServicer.BBL = rec.BBL; resultObj.mortgageServicer.requestId = rec.RequestId; resultObj.mortgageServicer.status = ((RequestStatus)rec.RequestStatusTypeId).ToString(); resultObj.mortgageServicer.externalReferenceId = rec.ExternalReferenceId; CallingSystem.PostCallBack(appContext, resultObj); } }
/// <summary> /// This method calls back portal for every log record in the list /// </summary> private static void MakeCallBacks(Common.Context appContext, List <DataRequestLog> logs, Decimal?billAmount) { if (!CallingSystem.isAnyCallBack(appContext)) { return; } var resultObj = new BAL.Results(); resultObj.waterBill = new WaterBillDetails(); resultObj.waterBill.billAmount = billAmount; foreach (var rec in logs) { resultObj.waterBill.BBL = rec.BBL; resultObj.waterBill.requestId = rec.RequestId; resultObj.waterBill.status = ((RequestStatus)rec.RequestStatusTypeId).ToString(); resultObj.waterBill.externalReferenceId = rec.ExternalReferenceId; CallingSystem.PostCallBack(appContext, resultObj); } }
/// <summary> /// This method calls back portal for every log record in the list /// </summary> /// <param name="appContext"></param> /// <param name="zEstimate"></param> /// <param name="logs">List or Request Log Records</param> private static void MakeCallBacks(Common.Context appContext, List <DataRequestLog> logs, Decimal?zEstimate) { if (!CallingSystem.isAnyCallBack(appContext)) { return; } var resultObj = new BAL.Results(); resultObj.zillowProperty = new ZillowPropertyDetails(); resultObj.zillowProperty.zEstimate = zEstimate; foreach (var rec in logs) { resultObj.zillowProperty.BBL = rec.BBL; resultObj.zillowProperty.requestId = rec.RequestId; resultObj.zillowProperty.status = ((RequestStatus)rec.RequestStatusTypeId).ToString(); resultObj.zillowProperty.externalReferenceId = rec.ExternalReferenceId; CallingSystem.PostCallBack(appContext, resultObj); } }
/// <summary> /// This method calls back portal for every log record in the list /// </summary> private static void MakeCallBacks(Common.Context appContext, List <DataRequestLog> logs, decimal?penaltyAmount, decimal?violationAmount) { if (!CallingSystem.isAnyCallBack(appContext)) { return; } var resultObj = new BAL.Results(); resultObj.dobPenaltiesAndViolationsSummary = new DOBPenaltiesAndViolationsSummaryData(); resultObj.dobPenaltiesAndViolationsSummary.civilPenaltyAmount = penaltyAmount; resultObj.dobPenaltiesAndViolationsSummary.violationAmount = violationAmount; foreach (var rec in logs) { resultObj.dobPenaltiesAndViolationsSummary.BBL = rec.BBL; resultObj.dobPenaltiesAndViolationsSummary.requestId = rec.RequestId; resultObj.dobPenaltiesAndViolationsSummary.status = ((RequestStatus)rec.RequestStatusTypeId).ToString(); resultObj.dobPenaltiesAndViolationsSummary.externalReferenceId = rec.ExternalReferenceId; CallingSystem.PostCallBack(appContext, resultObj); } }
/// <summary> /// This method updates the Mortgage Servicer table based on the information received from the Request Object /// </summary> /// <param name="appContext"></param> /// <param name="requestObj"></param> /// <returns>True if successful else false</returns> public static bool UpdateData(Common.Context appContext, Request requestObj) { using (WebDataEntities webDBEntities = new WebDataEntities()) { using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction()) { try { List <DataRequestLog> logs = null; bool?isFreddie = null; switch (requestObj.RequestStatusTypeId) { case (int)RequestStatus.Error: logs = DAL.DataRequestLog.SetAsError(webDBEntities, requestObj.RequestId); break; case (int)RequestStatus.Success: { DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetFirst(webDBEntities, requestObj.RequestId); if (dataRequestLogObj == null) { throw (new Exception("Cannot locate Request Log Record(s)")); } //var resultObj = // need to modify isFreddie = false; // resultObj.ServicerName; if (isFreddie == null) { logs = DAL.DataRequestLog.SetAsError(webDBEntities, requestObj.RequestId); } else { Parameters parameters = JSONToParameters(dataRequestLogObj.RequestParameters); //check if old data in the DB WebDataDB.FreddieMortgage mortgageObj = webDBEntities.FreddieMortgages.FirstOrDefault(i => i.BBL == parameters.BBL); if (mortgageObj != null) { //Update data with new results mortgageObj.IsFreddie = isFreddie.GetValueOrDefault(); mortgageObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault(); webDBEntities.Entry(mortgageObj).State = EntityState.Modified; } else { // add an entry into cache or DB mortgageObj = new WebDataDB.FreddieMortgage(); mortgageObj.BBL = parameters.BBL; mortgageObj.IsFreddie = isFreddie.GetValueOrDefault(); mortgageObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault(); webDBEntities.FreddieMortgages.Add(mortgageObj); } webDBEntities.SaveChanges(); logs = DAL.DataRequestLog.SetAsSuccess(webDBEntities, requestObj.RequestId); } break; } default: Common.Logs.log().Warn(string.Format("Update called for a Request Object Id {0} with incorrect Status Id {1}", requestObj.RequestId, requestObj.RequestStatusTypeId)); break; } webDBEntitiestransaction.Commit(); if (logs != null) { MakeCallBacks(appContext, logs, isFreddie); } return(true); } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { Common.Logs.log().Error(string.Format("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage)); } } return(false); } catch (Exception e) { webDBEntitiestransaction.Rollback(); Common.Logs.log().Error(string.Format("Exception encountered updating request with id {0}{1}", requestObj.RequestId, Common.Logs.FormatException(e))); return(false); } } } }
/// <summary> /// This method updates the WaterBill table based on the information received from the Request Object /// </summary> public static bool UpdateData(Common.Context appContext, Request requestObj) { using (WebDataEntities webDBEntities = new WebDataEntities()) { using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction()) { try { List <DataRequestLog> logs = null; Decimal?billAmount = null; switch (requestObj.RequestStatusTypeId) { case (int)RequestStatus.Error: DAL.DataRequestLog.SetAsError(webDBEntities, requestObj.RequestId); break; case (int)RequestStatus.Success: { DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetFirst(webDBEntities, requestObj.RequestId); if (dataRequestLogObj != null) { var resultObj = ResponseData.ParseWaterBill(requestObj.ResponseData); billAmount = resultObj.Amount; Parameters waterBillParams = JSONToParameters(dataRequestLogObj.RequestParameters); //check if data available WebDataDB.WaterBill waterBillObj = webDBEntities.WaterBills.FirstOrDefault(i => i.BBL == waterBillParams.BBL); if (waterBillObj != null) { waterBillObj.BillAmount = resultObj.Amount; waterBillObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault(); } else { waterBillObj = new WebDataDB.WaterBill(); waterBillObj.BBL = waterBillParams.BBL; waterBillObj.BillAmount = resultObj.Amount; waterBillObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault(); webDBEntities.WaterBills.Add(waterBillObj); } webDBEntities.SaveChanges(); logs = DAL.DataRequestLog.SetAsSuccess(webDBEntities, requestObj.RequestId); } else { throw (new Exception("Cannot locate Request Log Record(s)")); } break; } default: Common.Logs.log().Warn(String.Format("Update called for a Request Id {0} with incorrect Status Id {2}", requestObj.RequestId, requestObj.RequestStatusTypeId)); break; } webDBEntitiestransaction.Commit(); if (logs != null) { MakeCallBacks(appContext, logs, billAmount); } return(true); } catch (Exception e) { webDBEntitiestransaction.Rollback(); Common.Logs.log().Error(string.Format("Exception encountered updating request with id {0}{1}", requestObj.RequestId, Common.Logs.FormatException(e))); return(false); } } } }
/// <summary> /// This method updates the Zillow table based on the information received from the Request Object /// </summary> public static bool UpdateData(Common.Context appContext, Request requestObj) { using (WebDataEntities webDBEntities = new WebDataEntities()) { using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction()) { try { List <DataRequestLog> logs = null; decimal?zEstimate = null; switch (requestObj.RequestStatusTypeId) { case (int)RequestStatus.Error: logs = DAL.DataRequestLog.SetAsError(webDBEntities, requestObj.RequestId); break; case (int)RequestStatus.Success: { DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetFirst(webDBEntities, requestObj.RequestId); if (dataRequestLogObj != null) { RequestResponseBuilder.ResponseObjects.ZillowZEstimate resultObj = null; try { resultObj = (ResponseData.ParseZillowZEstimate(requestObj.ResponseData))[0]; zEstimate = resultObj.Zestimate; } catch (Exception e) { Common.Logs.log().Error(string.Format("Cannot parse the response data {0}{1}", requestObj.RequestId, Common.Logs.FormatException(e))); } Parameters parameters = JSONToParameters(dataRequestLogObj.RequestParameters); //check if old data in the DB WebDataDB.Zillow zillowObj = webDBEntities.Zillows.FirstOrDefault(i => i.BBL == parameters.BBL); if (zillowObj != null) { //Update data with new results zillowObj.zEstimate = zEstimate; zillowObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault(); } else { // add an entry into cache or DB zillowObj = new WebDataDB.Zillow(); zillowObj.BBL = parameters.BBL; zillowObj.zEstimate = zEstimate; zillowObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault(); webDBEntities.Zillows.Add(zillowObj); } webDBEntities.SaveChanges(); logs = DAL.DataRequestLog.SetAsSuccess(webDBEntities, requestObj.RequestId); } else { throw (new Exception("Cannot locate Request Log Record(s)")); } break; } default: Common.Logs.log().Warn(String.Format("Update called for a Request Object Id {0} with incorrect Status Id {1}", requestObj.RequestId, requestObj.RequestStatusTypeId)); break; } webDBEntitiestransaction.Commit(); if (logs != null) { MakeCallBacks(appContext, logs, zEstimate); } return(true); } catch (Exception e) { webDBEntitiestransaction.Rollback(); Common.Logs.log().Error(string.Format("Exception encountered updating request with id {0}{1}", requestObj.RequestId, Common.Logs.FormatException(e))); return(false); } } } }
/// <summary> /// This method updates the dCivilPenalties table based on the information received from the Request Object /// </summary> public static bool UpdateData(Common.Context appContext, Request requestObj) { using (WebDataEntities webDBEntities = new WebDataEntities()) { using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction()) { try { List <DataRequestLog> logs = null; decimal?penaltyAmount = null, violationAmount = null; switch (requestObj.RequestStatusTypeId) { case (int)RequestStatus.Error: logs = DAL.DataRequestLog.SetAsError(webDBEntities, requestObj.RequestId); break; case (int)RequestStatus.Success: { DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetFirst(webDBEntities, requestObj.RequestId); if (dataRequestLogObj != null) { decimal dobTotalPenaltyAmount = 0; decimal dobTotalViolationAmount = 0; foreach (var row in ResponseData.ParseECBviolationAndDOBCivilPenalty(requestObj.ResponseData).DOBCivilPenalties) { dobTotalPenaltyAmount += row.DOBCivilPenaltyAmount.GetValueOrDefault(); } foreach (var row in ResponseData.ParseECBviolationAndDOBCivilPenalty(requestObj.ResponseData).ECBViolations) { dobTotalViolationAmount += row.ECBPenaltyDue.GetValueOrDefault(); } penaltyAmount = dobTotalPenaltyAmount; violationAmount = dobTotalViolationAmount; Parameters parameters = JSONToParameters(dataRequestLogObj.RequestParameters); //check if data available WebDataDB.DOBViolation dobPenaltiesAndViolationsObj = webDBEntities.DOBViolations.FirstOrDefault(i => i.BBL == parameters.BBL); if (dobPenaltiesAndViolationsObj != null) { dobPenaltiesAndViolationsObj.DOBCivilPenalties = dobTotalPenaltyAmount; dobPenaltiesAndViolationsObj.ECBViolationAmount = dobTotalViolationAmount; dobPenaltiesAndViolationsObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault(); } else { dobPenaltiesAndViolationsObj = new WebDataDB.DOBViolation(); dobPenaltiesAndViolationsObj.BBL = parameters.BBL; dobPenaltiesAndViolationsObj.DOBCivilPenalties = dobTotalPenaltyAmount; dobPenaltiesAndViolationsObj.ECBViolationAmount = dobTotalViolationAmount; dobPenaltiesAndViolationsObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault(); webDBEntities.DOBViolations.Add(dobPenaltiesAndViolationsObj); } webDBEntities.SaveChanges(); logs = DAL.DataRequestLog.SetAsSuccess(webDBEntities, requestObj.RequestId); } else { throw (new Exception("Cannot locate Request Log Record(s)")); } break; } default: Common.Logs.log().Warn(string.Format("Update called for a Request Object Id {0} with incorrect Status Id {1}", requestObj.RequestId, requestObj.RequestStatusTypeId)); break; } webDBEntitiestransaction.Commit(); if (logs != null) { MakeCallBacks(appContext, logs, penaltyAmount, violationAmount); } return(true); } catch (Exception e) { webDBEntitiestransaction.Rollback(); Common.Logs.log().Error(string.Format("Exception encountered updating request with id {0}{1}", requestObj.RequestId, Common.Logs.FormatException(e))); return(false); } } } }