/// <summary>
        ///     Inserts a DataRequestLog object(row) for a given BBL and type of request when data (not stale) is found in WebData DB
        /// </summary>
        public static WebDataDB.DataRequestLog InsertForFailure(string propertyBBL, int requestTypeId, string externalReferenceId, string jobId, string requestParameters)
        {
            WebDataDB.DataRequestLog dataRequestLogObj = new WebDataDB.DataRequestLog();

            using (WebDataEntities webDBEntities = new WebDataEntities())
            { try
              {
                  dataRequestLogObj.BBL = propertyBBL;
                  dataRequestLogObj.RequestStatusTypeId = (int)RequestStatus.Error;
                  dataRequestLogObj.RequestTypeId       = requestTypeId;
                  dataRequestLogObj.RequestDateTime     = DateTime.UtcNow;
                  dataRequestLogObj.ExternalReferenceId = externalReferenceId;
                  dataRequestLogObj.JobId              = jobId;
                  dataRequestLogObj.ServedFromCache    = false;
                  dataRequestLogObj.WebDataRequestMade = false;
                  dataRequestLogObj.RequestParameters  = requestParameters;

                  dataRequestLogObj = webDBEntities.DataRequestLogs.Add(dataRequestLogObj);
                  webDBEntities.SaveChanges();
                  return(dataRequestLogObj);
              }
              catch (Exception e)
              { Common.Logs.log().Error(string.Format("Exception encountered request for BBL {0} for Request Type {1} with externalRefId {2}{3}", propertyBBL,
                                                      ((RequestStatus)requestTypeId).ToString(), externalReferenceId, Common.Logs.FormatException(e)));
                return(null); } }
        }
 /// <summary>
 ///     Gets a DataRequestLog object(row) from the DataRequestLog table for a given BBL and type of request with Pending status
 /// </summary>
 /// <param name="webDBEntities"></param>
 /// <param name="propertyBBL"></param>
 /// <param name="RequestTypeId"></param>
 /// <param name="requestParameters"></param>
 /// <returns></returns>
 public static WebDataDB.DataRequestLog GetPendingRequest(WebDataEntities webDBEntities, string propertyBBL, int RequestTypeId, string requestParameters)
 {
     return(webDBEntities.DataRequestLogs.FirstOrDefault(i => i.RequestStatusTypeId == (int)RequestStatus.Pending &&
                                                         i.RequestTypeId == RequestTypeId &&
                                                         i.BBL == propertyBBL &&
                                                         i.RequestParameters == requestParameters));
 }
 /// <summary>
 ///     Gets all DataRequestLog objects(rows) from the DataRequestLog table that have a pending status but have a
 ///     corresponding Request Object that is in error or completed successfully. This may happen when DJM is in session processing requests
 ///     and Data Services is down
 /// </summary>
 /// <param name="webDBEntities"></param>
 /// <returns></returns>
 public static List <WebDataDB.DataRequestLog> GetAllUnprocessed(WebDataEntities webDBEntities)
 {
     return((from drl in webDBEntities.DataRequestLogs
             join r in webDBEntities.Requests
             on drl.RequestId equals r.RequestId
             where drl.RequestStatusTypeId == (int)RequestStatus.Pending && (r.RequestStatusTypeId == (int)RequestStatus.Error || r.RequestStatusTypeId == (int)RequestStatus.Success)
             select drl).ToList());
 }
Example #4
0
        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));
            }
        }
Example #5
0
        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;
                    }
                }
            }
        }
Example #6
0
        public void UpdateStaleData()
        {
            string jobId = "SCH-" + DateTime.UtcNow.ToString() + " UTC";

            List <WebDataDB.vwStaleDataBBL> bblList = null;

            using (WebDataEntities webDBE = new WebDataEntities())
            {
                bblList = webDBE.vwStaleDataBBLs.OrderBy(m => m.BBL).ToList();
            }
            if (bblList == null || bblList.Count < 0)
            {
                return;
            }

            foreach (var bbl in bblList)
            {
                switch (bbl.RequestTypeId)
                {
                case (int)RequestTypes.NYCTaxBill:
                    BAL.TaxBill.Get(bbl.BBL, null, DAL.Request.STALEDATAPRIORITY, jobId);
                    break;

                case (int)RequestTypes.NYCWaterBill:
                    BAL.WaterBill.Get(bbl.BBL, null, DAL.Request.STALEDATAPRIORITY, jobId);
                    break;

                case (int)RequestTypes.NYCMortgageServicer:
                    BAL.MortgageServicer.Get(bbl.BBL, null, DAL.Request.STALEDATAPRIORITY, jobId);
                    break;

                case (int)RequestTypes.Zillow:
                    var propInfo = BAL.NYCPhysicalPropertyData.Get(bbl.BBL, true);
                    if (propInfo != null)
                    {
                        BAL.Zillow.LogFailure(bbl.BBL, null, jobId, (int)HttpStatusCode.BadRequest);
                    }
                    else
                    {
                        BAL.Zillow.Get(bbl.BBL, propInfo.address.ToString(), null, DAL.Request.STALEDATAPRIORITY, jobId);
                    }
                    break;

                case (int)RequestTypes.NYCNoticeOfPropertyValue:
                    BAL.NoticeOfPropertyValueDocument.GetDetails(bbl.BBL, null, DAL.Request.STALEDATAPRIORITY, jobId);
                    break;

                case (int)RequestTypes.NYCMortgageDocumentDetails:
                    BAL.MortgageDocument.GetDetailsAllUnstaisfiedMortgages(bbl.BBL, null, DAL.Request.STALEDATAPRIORITY, jobId);
                    break;

                default:
                    String msg = String.Format("Cannot process request - Invalid Request Type: {0} for BBL {1}", bbl.RequestTypeId, bbl.BBL);
                    Common.Logs.log().Warn(msg);
                    break;
                }
            }
        }
        /// <summary>
        ///     Gets all DataRequestLog objects(rows) from the DataRequestLog table for a given RequestId and sets their status to Error
        /// </summary>
        /// <param name="webDBEntities"></param>
        /// <param name="requestId"></param>
        /// <returns></returns>
        public static List <WebDataDB.DataRequestLog> SetAsSuccess(WebDataEntities webDBEntities, long requestId)
        {
            List <WebDataDB.DataRequestLog> requestDataLogList = webDBEntities.DataRequestLogs.Where(i => i.RequestId == requestId).ToList();

            requestDataLogList.ForEach(a => a.RequestStatusTypeId = (int)RequestStatus.Success);
            webDBEntities.SaveChanges();

            return(requestDataLogList);
        }
Example #8
0
        public IHttpActionResult GetRequestByExternalReferenceId(string externalReferenceId)
        {
            using (WebDataEntities webDataE = new WebDataEntities())
            {
                List <DataRequestLog> requestLogList = DAL.DataRequestLog.GetAll(webDataE, externalReferenceId);
                if (requestLogList == null)
                {
                    return(NotFound());
                }

                var result = new BAL.Results();
                foreach (var requestLogObj in requestLogList)
                {
                    switch (requestLogObj.RequestTypeId)
                    {
                    case (int)RequestTypes.NYCTaxBill:
                        result.taxBill = BAL.TaxBill.ReRun(requestLogObj);
                        break;

                    case (int)RequestTypes.NYCWaterBill:
                        result.waterBill = BAL.WaterBill.ReRun(requestLogObj);
                        break;

                    case (int)RequestTypes.NYCMortgageServicer:
                        result.mortgageServicer = BAL.MortgageServicer.ReRun(requestLogObj);
                        break;

                    case (int)RequestTypes.NYCDOBPenaltiesAndViolations:
                        result.dobPenaltiesAndViolationsSummary = BAL.DOBPenaltiesAndViolationsSummary.ReRun(requestLogObj);
                        break;

                    case (int)RequestTypes.Zillow:
                        result.zillowProperty = BAL.Zillow.ReRun(requestLogObj);
                        break;

                    case (int)RequestTypes.NYCNoticeOfPropertyValue:
                        result.noticeOfPropertyValueResult = BAL.NoticeOfPropertyValueDocument.ReRun(requestLogObj);
                        break;

                    case (int)RequestTypes.NYCMortgageDocumentDetails:
                        result.mortgageDocumentResult = BAL.MortgageDocument.ReRun(requestLogObj);
                        break;

                    default:
                        break;
                    }
                }
                return(Ok(result));
            }
        }
Example #9
0
        /// <summary>
        ///     Inserts a Request object(row) for a given BBL and type of request when data (not stale) is found in WebData DB
        /// </summary>
        /// <param name="webDBEntities"></param>
        /// <param name="requestStr">
        ///     Depending on the Request Type a helper class will be provided to convert business level variables into a string (in a specific format)
        ///     such that it is readable by the web scarping service.
        /// </param>
        /// <param name="requestTypeId"></param>
        /// <param name="priority"></param>
        /// <param name="jobId"></param>
        /// <returns></returns>
        public static WebDataDB.Request Insert(WebDataEntities webDBEntities, string requestStr, int requestTypeId, int priority, string jobId)
        {
            WebDataDB.Request requestObj = new WebDataDB.Request();
            requestObj.JobId               = jobId;
            requestObj.Priorty             = priority;
            requestObj.RequestTypeId       = requestTypeId;
            requestObj.RequestStatusTypeId = (int)RequestStatus.Pending;
            requestObj.DateTimeSubmitted   = DateTime.UtcNow;
            requestObj.AttemptNumber       = 0;
            requestObj.RequestData         = requestStr;

            requestObj = webDBEntities.Requests.Add(requestObj);
            webDBEntities.SaveChanges();

            return(requestObj);
        }
Example #10
0
        public IHttpActionResult GetRequest(long requestId)
        {
            using (WebDataEntities webDataE = new WebDataEntities())
            {
                WebDataDB.DataRequestLog requestLogObj = DAL.DataRequestLog.GetFirst(webDataE, requestId);
                if (requestLogObj == null)
                {
                    return(NotFound());
                }
                var result = new BAL.Results();
                switch (requestLogObj.RequestTypeId)
                {
                case (int)RequestTypes.NYCTaxBill:
                    result.taxBill = BAL.TaxBill.ReRun(requestLogObj);
                    return(Ok(result));

                case (int)RequestTypes.NYCWaterBill:
                    result.waterBill = BAL.WaterBill.ReRun(requestLogObj);
                    return(Ok(result));

                case (int)RequestTypes.NYCMortgageServicer:
                    result.mortgageServicer = BAL.MortgageServicer.ReRun(requestLogObj);
                    return(Ok(result));

                case (int)RequestTypes.NYCDOBPenaltiesAndViolations:
                    result.dobPenaltiesAndViolationsSummary = BAL.DOBPenaltiesAndViolationsSummary.ReRun(requestLogObj);
                    return(Ok(result));

                case (int)RequestTypes.Zillow:
                    result.zillowProperty = BAL.Zillow.ReRun(requestLogObj);
                    return(Ok(result));

                case (int)RequestTypes.NYCNoticeOfPropertyValue:
                    result.noticeOfPropertyValueResult = BAL.NoticeOfPropertyValueDocument.ReRun(requestLogObj);
                    return(Ok(result));

                case (int)RequestTypes.NYCMortgageDocumentDetails:
                    result.mortgageDocumentResult = BAL.MortgageDocument.ReRun(requestLogObj);
                    return(Ok(result));

                default:
                    return(BadRequest("Bad Request - Incorrect Request Type"));
                }
            }
        }
        /// <summary>
        ///     Inserts a DataRequestLog object(row) for a given BBL and type of request when data (not stale) is found in WebData DB
        /// </summary>
        public static WebDataDB.DataRequestLog InsertForCacheAccess(WebDataEntities webDBEntities, string propertyBBL, int requestTypeId,
                                                                    string externalReferenceId, string jobId, string requestParameters)
        {
            WebDataDB.DataRequestLog dataRequestLogObj = new WebDataDB.DataRequestLog();
            dataRequestLogObj.BBL = propertyBBL;
            dataRequestLogObj.RequestStatusTypeId = (int)RequestStatus.Success;
            dataRequestLogObj.RequestTypeId       = requestTypeId;
            dataRequestLogObj.RequestDateTime     = DateTime.UtcNow;
            dataRequestLogObj.ExternalReferenceId = externalReferenceId;
            dataRequestLogObj.JobId              = jobId;
            dataRequestLogObj.ServedFromCache    = true;
            dataRequestLogObj.WebDataRequestMade = false;
            dataRequestLogObj.RequestParameters  = requestParameters;

            dataRequestLogObj = webDBEntities.DataRequestLogs.Add(dataRequestLogObj);
            webDBEntities.SaveChanges();

            return(dataRequestLogObj);
        }
        /// <summary>
        ///    This function returns a list of unsatisfied mortgages and deletes any mortgage data stored for a mortgaged that is satisfied
        /// </summary>
        public static List <tfnGetUnsatisfiedMortgages_Result> GetSynchronizedData(string propertyBBL)
        {
            List <tfnGetUnsatisfiedMortgages_Result> uMortgagesList = null;

            //get all unsatisfied mortgage document records
            using (ACRISEntities acrisDBEntities = new ACRISEntities())
            {
                uMortgagesList = acrisDBEntities.tfnGetUnsatisfiedMortgages(propertyBBL).ToList();
            }

            //get all mortgage document records stored in webdata locally
            using (WebDataEntities wDBEntities = new WebDataEntities())
            {
                if (uMortgagesList == null || uMortgagesList.Count <= 0)
                {
                    wDBEntities.Mortgages.RemoveRange(wDBEntities.Mortgages.Where(x => x.BBL == propertyBBL));
                }
                else
                {
                    List <WebDataDB.Mortgage> webDataMortgageList = wDBEntities.Mortgages.Where(x => x.BBL == propertyBBL).ToList();
                    foreach (var wDBMortgage in webDataMortgageList)
                    {
                        bool found = false;
                        foreach (var uMortgage in uMortgagesList)
                        {
                            if (uMortgage.URL == wDBMortgage.MortgageDocumentURI)
                            {
                                found = true;
                                break;
                            }
                        }

                        if (!found)
                        {
                            wDBEntities.Mortgages.Remove(wDBMortgage);
                        }
                    }
                }
                wDBEntities.SaveChanges();
            }

            return(uMortgagesList);
        }
Example #13
0
        /// <summary>
        ///     This method gets the data or current status for a request
        /// </summary>
        /// <param name="dataRequestLogObj"></param>
        /// <returns></returns>
        public static DOBPenaltiesAndViolationsSummaryData ReRun(DataRequestLog dataRequestLogObj)
        {
            DOBPenaltiesAndViolationsSummaryData dPenaltiesAndViolations = new DOBPenaltiesAndViolationsSummaryData();

            dPenaltiesAndViolations.BBL                 = dataRequestLogObj.BBL;
            dPenaltiesAndViolations.requestId           = dataRequestLogObj.RequestId;
            dPenaltiesAndViolations.externalReferenceId = dataRequestLogObj.ExternalReferenceId;
            dPenaltiesAndViolations.status              = ((RequestStatus)dataRequestLogObj.RequestStatusTypeId).ToString();;
            dPenaltiesAndViolations.civilPenaltyAmount  = null;
            dPenaltiesAndViolations.violationAmount     = null;

            try
            {
                Parameters parameters = JSONToParameters(dataRequestLogObj.RequestParameters);

                using (WebDataEntities webDBEntities = new WebDataEntities())
                {
                    if (dataRequestLogObj.RequestStatusTypeId == (int)RequestStatus.Success)
                    {
                        //check if data available
                        WebDataDB.DOBViolation dCivilPenaltiesObj = webDBEntities.DOBViolations.FirstOrDefault(i => i.BBL == parameters.BBL);

                        if (dCivilPenaltiesObj != null && DateTime.UtcNow.Subtract(dCivilPenaltiesObj.LastUpdated).Days <= 30)
                        {
                            dPenaltiesAndViolations.civilPenaltyAmount = dCivilPenaltiesObj.DOBCivilPenalties;
                            dPenaltiesAndViolations.violationAmount    = dCivilPenaltiesObj.ECBViolationAmount;
                        }
                        else
                        {
                            dPenaltiesAndViolations.status = RequestStatus.Error.ToString();
                        }
                    }
                }
                return(dPenaltiesAndViolations);
            }
            catch (Exception e)
            {
                Common.Logs.log().Error(string.Format("Exception encountered processing request log for {0} with externalRefId {1}{2}",
                                                      dataRequestLogObj.BBL, dataRequestLogObj.ExternalReferenceId, Common.Logs.FormatException(e)));
                return(null);
            }
        }
Example #14
0
        /// <summary>
        ///     Update Request object with higher priority and Job Id
        /// </summary>
        public static WebDataDB.Request Update(WebDataEntities webDBEntities, long requestId, int priority, string jobId)
        {
            var requestObj = webDBEntities.Requests.Where(x => x.RequestId == requestId).FirstOrDefault();

            if (requestObj == null)
            {
                return(null);
            }

            requestObj.JobId = jobId;
            if (requestObj.Priorty > priority)
            {
                requestObj.Priorty = priority;
            }

            webDBEntities.Requests.Attach(requestObj);
            webDBEntities.Entry(requestObj).State = EntityState.Modified;
            webDBEntities.SaveChanges();

            return(requestObj);
        }
Example #15
0
        /// <summary>
        ///     This method gets the data or current status for a request
        /// </summary>
        /// <param name="dataRequestLogObj"></param>
        /// <returns></returns>
        public static WaterBillDetails ReRun(DataRequestLog dataRequestLogObj)
        {
            WaterBillDetails waterBill = new WaterBillDetails();

            waterBill.BBL                 = dataRequestLogObj.BBL;
            waterBill.requestId           = dataRequestLogObj.RequestId;
            waterBill.externalReferenceId = dataRequestLogObj.ExternalReferenceId;
            waterBill.status              = ((RequestStatus)dataRequestLogObj.RequestStatusTypeId).ToString();
            waterBill.billAmount          = null;

            try
            {
                using (WebDataEntities webDBEntities = new WebDataEntities())
                {
                    if (dataRequestLogObj.RequestStatusTypeId == (int)RequestStatus.Success)
                    {
                        Parameters waterParams = JSONToParameters(dataRequestLogObj.RequestParameters);
                        //check if data available
                        WebDataDB.WaterBill waterBillObj = webDBEntities.WaterBills.FirstOrDefault(i => i.BBL == waterParams.BBL);

                        if (waterBillObj != null && DateTime.UtcNow.Subtract(waterBillObj.LastUpdated).Days <= 30)
                        {
                            waterBill.billAmount = waterBillObj.BillAmount;
                        }
                        else
                        {
                            waterBill.status = RequestStatus.Error.ToString();
                        }
                    }
                }
                return(waterBill);
            }
            catch (Exception e)
            {
                Common.Logs.log().Error(string.Format("Exception encountered precessing request log for {0} with externalRefId {1}{2}",
                                                      dataRequestLogObj.BBL, dataRequestLogObj.ExternalReferenceId, Common.Logs.FormatException(e)));
                return(null);
            }
        }
Example #16
0
        /// <summary>
        ///     This method gets the data or current status for a request
        /// </summary>
        /// <param name="dataRequestLogObj"></param>
        /// <returns></returns>
        public static NoticeOfPropertyValueResult ReRun(DataRequestLog dataRequestLogObj)
        {
            NoticeOfPropertyValueResult resultObj = new NoticeOfPropertyValueResult();

            resultObj.BBL                 = dataRequestLogObj.BBL;
            resultObj.requestId           = dataRequestLogObj.RequestId;
            resultObj.externalReferenceId = dataRequestLogObj.ExternalReferenceId;
            resultObj.status              = ((RequestStatus)dataRequestLogObj.RequestStatusTypeId).ToString();

            try
            {
                using (WebDataEntities webDBEntities = new WebDataEntities())
                {
                    if (dataRequestLogObj.RequestStatusTypeId == (int)RequestStatus.Success)
                    {
                        Parameters parameters = JSONToParameters(dataRequestLogObj.RequestParameters);
                        //check if data available
                        WebDataDB.NoticeOfProperyValue noticeOfPropetyValueObj = webDBEntities.NoticeOfProperyValues.FirstOrDefault(i => i.BBL == parameters.BBL);

                        if (noticeOfPropetyValueObj != null && DateTime.UtcNow.Subtract(noticeOfPropetyValueObj.LastUpdated).Days <= 30)
                        {
                            resultObj.noticeOfPropertyValue = noticeOfPropetyValueObj;
                        }
                        else
                        {
                            resultObj.status = RequestStatus.Error.ToString();
                        }
                    }
                }
                return(resultObj);
            }
            catch (Exception e)
            {
                Common.Logs.log().Error(string.Format("Exception encountered processing request log for {0} with externalRefId {1}{2}",
                                                      dataRequestLogObj.BBL, dataRequestLogObj.ExternalReferenceId, Common.Logs.FormatException(e)));
                return(null);
            }
        }
Example #17
0
        /// <summary>
        ///     This method gets the data or current status for a request
        /// </summary>
        /// <param name="dataRequestLogObj"></param>
        /// <returns></returns>
        public static FreddieMortgageDetails ReRun(DataRequestLog dataRequestLogObj)
        {
            FreddieMortgageDetails mDetails = new FreddieMortgageDetails();

            mDetails.BBL                 = dataRequestLogObj.BBL;
            mDetails.requestId           = dataRequestLogObj.RequestId;
            mDetails.externalReferenceId = dataRequestLogObj.ExternalReferenceId;
            mDetails.status              = ((RequestStatus)dataRequestLogObj.RequestStatusTypeId).ToString();

            try
            {
                using (WebDataEntities webDBEntities = new WebDataEntities())
                {
                    if (dataRequestLogObj.RequestStatusTypeId == (int)RequestStatus.Success)
                    {
                        Parameters parameters = JSONToParameters(dataRequestLogObj.RequestParameters);
                        //check if data available
                        WebDataDB.FreddieMortgage mortgageObj = webDBEntities.FreddieMortgages.FirstOrDefault(i => i.BBL == parameters.BBL);

                        if (mortgageObj != null && DateTime.UtcNow.Subtract(mortgageObj.LastUpdated).Days <= 30)
                        {
                            mDetails.isFreddieMortgage = mortgageObj.IsFreddie;
                        }
                        else
                        {
                            mDetails.status = RequestStatus.Error.ToString();
                        }
                    }
                }
                return(mDetails);
            }
            catch (Exception e)
            {
                Common.Logs.log().Error(string.Format("Exception encountered processing request log for {0} with externalRefId {1}{2}",
                                                      dataRequestLogObj.BBL, dataRequestLogObj.ExternalReferenceId, Common.Logs.FormatException(e)));
                return(null);
            }
        }
Example #18
0
        /// <summary>
        ///     This method gets the data or current status for a request
        /// </summary>
        /// <param name="dataRequestLogObj"></param>
        /// <returns></returns>
        public static ZillowPropertyDetails ReRun(DataRequestLog dataRequestLogObj)
        {
            ZillowPropertyDetails zPropertyDetails = new ZillowPropertyDetails();

            zPropertyDetails.BBL                 = dataRequestLogObj.BBL;
            zPropertyDetails.requestId           = dataRequestLogObj.RequestId;
            zPropertyDetails.externalReferenceId = dataRequestLogObj.ExternalReferenceId;
            zPropertyDetails.status              = ((RequestStatus)dataRequestLogObj.RequestStatusTypeId).ToString();;
            zPropertyDetails.zEstimate           = null;
            try
            {
                using (WebDataEntities webDBEntities = new WebDataEntities())
                {
                    if (dataRequestLogObj.RequestStatusTypeId == (int)RequestStatus.Success)
                    {
                        Parameters parameters = JSONToParameters(dataRequestLogObj.RequestParameters);
                        //check if data available
                        WebDataDB.Zillow zillowObj = webDBEntities.Zillows.FirstOrDefault(i => i.BBL == parameters.BBL);

                        if (zillowObj != null && DateTime.UtcNow.Subtract(zillowObj.LastUpdated).Days <= 30)
                        {
                            zPropertyDetails.zEstimate = zillowObj.zEstimate;
                        }
                        else
                        {
                            zPropertyDetails.status = RequestStatus.Error.ToString();
                        }
                    }
                }
                return(zPropertyDetails);
            }
            catch (Exception e)
            { Common.Logs.log().Error(string.Format("Exception encountered processing request log for {0} with externalRefId {1}{2}",
                                                    dataRequestLogObj.BBL, dataRequestLogObj.ExternalReferenceId, Common.Logs.FormatException(e)));
              return(null); }
        }
Example #19
0
        /// <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);
                    }
                }
            }
        }
Example #20
0
        /// <summary>
        ///     This method updates the Mortgage Servicer table based on the information received from the Request Object
        /// </summary>
        /// <param name="requestObj"></param>
        /// <param name="appContext"></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;
                        NoticeOfProperyValue  noticeOfPropertyValueObj = 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)
                            {
                                var resultObj = ResponseData.ParseNoticeOfPropertyValue(requestObj.ResponseData);

                                Parameters parameters = JSONToParameters(dataRequestLogObj.RequestParameters);
                                //check if old data in the DB
                                noticeOfPropertyValueObj = webDBEntities.NoticeOfProperyValues.FirstOrDefault(i => i.BBL == parameters.BBL);

                                if (noticeOfPropertyValueObj != null)
                                {           //Update data with new results
                                    noticeOfPropertyValueObj             = CopyData(noticeOfPropertyValueObj, resultObj);
                                    noticeOfPropertyValueObj.BBL         = parameters.BBL;
                                    noticeOfPropertyValueObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault();
                                    webDBEntities.Entry(noticeOfPropertyValueObj).State = EntityState.Modified;
                                }
                                else
                                {           // add an entry into cache or DB
                                    noticeOfPropertyValueObj             = CopyData(null, resultObj);
                                    noticeOfPropertyValueObj.BBL         = parameters.BBL;
                                    noticeOfPropertyValueObj.LastUpdated = requestObj.DateTimeEnded.GetValueOrDefault();
                                    webDBEntities.NoticeOfProperyValues.Add(noticeOfPropertyValueObj);
                                }

                                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, noticeOfPropertyValueObj);
                        }
                        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);
                    }
                }
            }
        }
Example #21
0
        /// <summary>
        ///     This method deals with all the details associated with either returning the Zillow details or creating the
        ///     request for getting it scrapped from the web
        /// </summary>
        public static ZillowPropertyDetails Get(string propertyBBL, string address, string externalReferenceId, int priority, string jobId)
        {
            ZillowPropertyDetails zPropertyDetails = new ZillowPropertyDetails();

            zPropertyDetails.BBL = propertyBBL;
            zPropertyDetails.externalReferenceId = externalReferenceId;
            zPropertyDetails.status    = RequestStatus.Pending.ToString();
            zPropertyDetails.zEstimate = null;

            string parameters = ParametersToJSON(propertyBBL, address);

            using (WebDataEntities webDBEntities = new WebDataEntities())
            {
                using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction())
                {
                    try
                    {
                        string jsonBillParams = ParametersToJSON(propertyBBL, address);

                        //check if data available
                        WebDataDB.Zillow zillowObj = webDBEntities.Zillows.FirstOrDefault(i => i.BBL == propertyBBL);

                        // record in database and data is not stale
                        if (zillowObj != null && DateTime.UtcNow.Subtract(zillowObj.LastUpdated).Days <= 30)
                        {
                            zPropertyDetails.zEstimate = zillowObj.zEstimate;
                            zPropertyDetails.status    = RequestStatus.Success.ToString();

                            DAL.DataRequestLog.InsertForCacheAccess(webDBEntities, propertyBBL, RequestTypeId, externalReferenceId, jobId, jsonBillParams);
                        }
                        else
                        {   //check if pending request in queue
                            DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetPendingRequest(webDBEntities, propertyBBL, RequestTypeId, jsonBillParams);

                            if (dataRequestLogObj == null) //No Pending Request Create New Request
                            {
                                string requestStr = RequestResponseBuilder.RequestObjects.RequestData.ZillowZEstimate(address);

                                Request requestObj = DAL.Request.Insert(webDBEntities, requestStr, RequestTypeId, priority, jobId);

                                dataRequestLogObj = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, propertyBBL, RequestTypeId, requestObj.RequestId,
                                                                                               externalReferenceId, jobId, jsonBillParams);

                                zPropertyDetails.status    = RequestStatus.Pending.ToString();
                                zPropertyDetails.requestId = requestObj.RequestId;
                            }
                            else //Pending request in queue
                            {
                                zPropertyDetails.status = RequestStatus.Pending.ToString();
                                //Send the RequestId for the pending request back
                                zPropertyDetails.requestId = dataRequestLogObj.RequestId;
                                dataRequestLogObj          = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, propertyBBL, RequestTypeId,
                                                                                                        dataRequestLogObj.RequestId.GetValueOrDefault(), externalReferenceId, jobId, jsonBillParams);
                            }
                        }
                        webDBEntitiestransaction.Commit();
                    }
                    catch (Exception e)
                    {
                        webDBEntitiestransaction.Rollback();
                        zPropertyDetails.status = RequestStatus.Error.ToString();
                        DAL.DataRequestLog.InsertForFailure(propertyBBL, RequestTypeId, externalReferenceId, jobId, parameters);
                        Common.Logs.log().Error(string.Format("Exception encountered processing {0} with externalRefId {1}{2}", propertyBBL, externalReferenceId, Common.Logs.FormatException(e)));
                    }
                }
            }
            return(zPropertyDetails);
        }
Example #22
0
        /// <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);
                    }
                }
            }
        }
Example #23
0
        /// <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);
                    }
                }
            }
        }
Example #24
0
        /// <summary>
        ///     This method deals with all the details associated with either returning the water bill details or creating the
        ///     request for getting is scrapped from the web
        /// </summary>
        public static WaterBillDetails Get(string propertyBBL, string externalReferenceId, int priority, string jobId)
        {
            WaterBillDetails waterBill = new WaterBillDetails();

            waterBill.externalReferenceId = externalReferenceId;
            waterBill.status     = RequestStatus.Pending.ToString();
            waterBill.BBL        = propertyBBL;
            waterBill.billAmount = null;

            using (WebDataEntities webDBEntities = new WebDataEntities())
            {
                using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction())
                {
                    string parameters = ParametersToJSON(propertyBBL);

                    try
                    {
                        //check if data available
                        WebDataDB.WaterBill waterBillObj = webDBEntities.WaterBills.FirstOrDefault(i => i.BBL == propertyBBL);

                        // record in database and data is not stale
                        if (waterBillObj != null && DateTime.UtcNow.Subtract(waterBillObj.LastUpdated).Days <= 30)
                        {
                            waterBill.billAmount = waterBillObj.BillAmount;
                            waterBill.status     = RequestStatus.Success.ToString();

                            DAL.DataRequestLog.InsertForCacheAccess(webDBEntities, propertyBBL, RequestTypeId, externalReferenceId, jobId, parameters);
                        }
                        else
                        {   //check if pending request in queue
                            DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetPendingRequest(webDBEntities, propertyBBL, RequestTypeId, parameters);

                            if (dataRequestLogObj == null) //No Pending Request Create New Request
                            {
                                string requestStr = RequestData.WaterBill(propertyBBL);

                                Request requestObj = DAL.Request.Insert(webDBEntities, requestStr, RequestTypeId, priority, jobId);

                                dataRequestLogObj = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, propertyBBL, RequestTypeId, requestObj.RequestId,
                                                                                               externalReferenceId, jobId, parameters);

                                waterBill.status    = RequestStatus.Pending.ToString();
                                waterBill.requestId = requestObj.RequestId;
                            }
                            else //Pending request in queue
                            {
                                waterBill.status = RequestStatus.Pending.ToString();
                                //Send the RequestId for the pending request back
                                waterBill.requestId = dataRequestLogObj.RequestId;
                                dataRequestLogObj   = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, propertyBBL, RequestTypeId, dataRequestLogObj.RequestId.GetValueOrDefault(),
                                                                                                 externalReferenceId, jobId, parameters);
                            }
                        }
                        webDBEntitiestransaction.Commit();
                    }
                    catch (Exception e)
                    {
                        webDBEntitiestransaction.Rollback();
                        waterBill.status = RequestStatus.Error.ToString();
                        DAL.DataRequestLog.InsertForFailure(propertyBBL, RequestTypeId, externalReferenceId, jobId, parameters);
                        Common.Logs.log().Error(string.Format("Exception encountered processing {0} with externalRefId {1}: {2}",
                                                              propertyBBL, externalReferenceId, Common.Logs.FormatException(e)));
                    }
                }
            }
            return(waterBill);
        }
        /// <summary>
        ///     This method deals with all the details associated with either returning the details in the Mortgage Document or creating the
        ///     request for getting the data from the web
        /// </summary>
        /// <param name="propertyBBL"></param>
        /// <param name="externalReferenceId"></param>
        /// <param name="documentURI"></param>
        /// <param name="jobId"></param>
        /// <param name="priority"></param>
        /// <returns></returns>
        public static MortgageDocumentResult GetDetails(string propertyBBL, string documentURI, string externalReferenceId, int priority, string jobId)
        {
            MortgageDocumentResult mortgageDocumentResultObj = new MortgageDocumentResult();

            mortgageDocumentResultObj.BBL = propertyBBL;
            mortgageDocumentResultObj.mortgageDocumentURI = documentURI;
            mortgageDocumentResultObj.externalReferenceId = externalReferenceId;
            mortgageDocumentResultObj.status = RequestStatus.Pending.ToString();

            string jsonBillParams = ParametersToJSON(propertyBBL, documentURI);

            using (WebDataEntities webDBEntities = new WebDataEntities())
            {
                using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction())
                {
                    try
                    {
                        //check if data available
                        var mortgageDocumentObj = webDBEntities.Mortgages.FirstOrDefault(i => i.BBL == propertyBBL && i.MortgageDocumentURI == documentURI);

                        // record in database and data is not stale
                        if (mortgageDocumentObj != null && DateTime.UtcNow.Subtract(mortgageDocumentObj.LastUpdated).Days <= 30)
                        {
                            mortgageDocumentResultObj.mortgageDetails = mortgageDocumentObj;
                            mortgageDocumentResultObj.status          = RequestStatus.Success.ToString();

                            DAL.DataRequestLog.InsertForCacheAccess(webDBEntities, propertyBBL, RequestTypeId, externalReferenceId, jobId, jsonBillParams);
                        }
                        else
                        {   //check if pending request in queue
                            DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetPendingRequest(webDBEntities, propertyBBL, RequestTypeId, jsonBillParams);

                            if (dataRequestLogObj == null) //No Pending Request Create New Request
                            {
                                string requestStr = RequestResponseBuilder.RequestObjects.RequestData.CreateRequestDataForMortgage(documentURI);

                                Request requestObj = DAL.Request.Insert(webDBEntities, requestStr, RequestTypeId, priority, jobId);

                                dataRequestLogObj = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, propertyBBL, RequestTypeId, requestObj.RequestId,
                                                                                               externalReferenceId, jobId, jsonBillParams);

                                mortgageDocumentResultObj.status    = RequestStatus.Pending.ToString();
                                mortgageDocumentResultObj.requestId = requestObj.RequestId;
                            }
                            else //Pending request in queue
                            {
                                mortgageDocumentResultObj.status = RequestStatus.Pending.ToString();
                                //Send the RequestId for the pending request back
                                mortgageDocumentResultObj.requestId = dataRequestLogObj.RequestId;
                                dataRequestLogObj = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, propertyBBL, RequestTypeId,
                                                                                               dataRequestLogObj.RequestId.GetValueOrDefault(), externalReferenceId, jobId, jsonBillParams);
                            }
                        }
                        webDBEntitiestransaction.Commit();
                    }
                    catch (Exception e)
                    {
                        webDBEntitiestransaction.Rollback();
                        mortgageDocumentResultObj.status = RequestStatus.Error.ToString();
                        DAL.DataRequestLog.InsertForFailure(propertyBBL, RequestTypeId, externalReferenceId, jobId, jsonBillParams);
                        Common.Logs.log().Error(string.Format("Exception encountered processing {0} with externalRefId {1}{2}",
                                                              propertyBBL, externalReferenceId, Common.Logs.FormatException(e)));
                    }
                }
            }
            return(mortgageDocumentResultObj);
        }
 /// <summary>
 ///     Gets all DataRequestLog objects(rows) from the DataRequestLog table for a given externalReferenceId
 /// </summary>
 /// <param name="webDBEntities"></param>
 /// <param name="externalRefereceId"></param>
 /// <returns></returns>
 public static List <WebDataDB.DataRequestLog> GetAll(WebDataEntities webDBEntities, string externalRefereceId)
 {
     return(webDBEntities.DataRequestLogs.Where(i => i.ExternalReferenceId == externalRefereceId).ToList());
 }
Example #27
0
        /// <summary>
        ///     This method deals with all the details associated with either returning the Mortgage Servicer details or creating the
        ///     request for getting it scrapped from the web
        /// </summary>
        public static FreddieMortgageDetails Get(Parameters inParameters, string externalReferenceId, int priority, string jobId)
        {
            FreddieMortgageDetails mDetails = new FreddieMortgageDetails();

            mDetails.BBL = inParameters.BBL;
            mDetails.externalReferenceId = externalReferenceId;
            mDetails.status = RequestStatus.Pending.ToString();

            string parameters = ParametersToJSON(inParameters);

            using (WebDataEntities webDBEntities = new WebDataEntities())
            {
                using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction())
                {
                    try
                    {
                        //check if data available
                        WebDataDB.FreddieMortgage mortgageObj = webDBEntities.FreddieMortgages.FirstOrDefault(i => i.BBL == inParameters.BBL);

                        // record in database and data is not stale
                        if (mortgageObj != null && DateTime.UtcNow.Subtract(mortgageObj.LastUpdated).Days <= 30)
                        {
                            mDetails.isFreddieMortgage = mortgageObj.IsFreddie;
                            mDetails.status            = RequestStatus.Success.ToString();

                            DAL.DataRequestLog.InsertForCacheAccess(webDBEntities, inParameters.BBL, RequestTypeId, externalReferenceId, jobId, parameters);
                        }
                        else
                        {   //check if pending request in queue
                            DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetPendingRequest(webDBEntities, inParameters.BBL, RequestTypeId, parameters);

                            if (dataRequestLogObj == null) //No Pending Request Create New Request
                            {
                                string requestStr = "";    //RequestData.XXXX(inParameters);

                                Request requestObj = DAL.Request.Insert(webDBEntities, requestStr, RequestTypeId, priority, jobId);

                                dataRequestLogObj = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, inParameters.BBL, RequestTypeId, requestObj.RequestId,
                                                                                               externalReferenceId, jobId, parameters);

                                mDetails.status    = RequestStatus.Pending.ToString();
                                mDetails.requestId = requestObj.RequestId;
                            }
                            else //Pending request in queue
                            {
                                mDetails.status = RequestStatus.Pending.ToString();
                                //Send the RequestId for the pending request back
                                mDetails.requestId = dataRequestLogObj.RequestId;
                                dataRequestLogObj  = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, inParameters.BBL, RequestTypeId,
                                                                                                dataRequestLogObj.RequestId.GetValueOrDefault(), externalReferenceId, jobId, parameters);
                            }
                        }
                        webDBEntitiestransaction.Commit();
                    }
                    catch (Exception e)
                    {
                        webDBEntitiestransaction.Rollback();
                        mDetails.status = RequestStatus.Error.ToString();
                        DAL.DataRequestLog.InsertForFailure(inParameters.BBL, RequestTypeId, externalReferenceId, jobId, parameters);
                        Common.Logs.log().Error(string.Format("Exception encountered processing {0} with externalRefId {1}{2}",
                                                              inParameters.BBL, externalReferenceId, Common.Logs.FormatException(e)));
                    }
                }
            }
            return(mDetails);
        }
 /// <summary>
 ///     Gets a DataRequestLog object(row) from the DataRequestLog table for a given RequestId
 /// </summary>
 /// <param name="webDBEntities"></param>
 /// <param name="requestId"></param>
 /// <returns></returns>
 public static WebDataDB.DataRequestLog GetFirst(WebDataEntities webDBEntities, long requestId)
 {
     return(webDBEntities.DataRequestLogs.FirstOrDefault(i => i.RequestId == requestId));
 }
Example #29
0
        /// <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);
                    }
                }
            }
        }
Example #30
0
        /// <summary>
        ///     This method deals with all the details associated with either returning the DOB Penalties and Violations details or creating the
        ///     request for getting it scrapped from the web
        /// </summary>
        public static DOBPenaltiesAndViolationsSummaryData Get(string propertyBBL, string externalReferenceId, int priority, string jobId)
        {
            DOBPenaltiesAndViolationsSummaryData dPenaltiesAndViolations = new DOBPenaltiesAndViolationsSummaryData();

            dPenaltiesAndViolations.BBL = propertyBBL;
            dPenaltiesAndViolations.externalReferenceId = externalReferenceId;
            dPenaltiesAndViolations.status             = RequestStatus.Pending.ToString();
            dPenaltiesAndViolations.civilPenaltyAmount = null;
            dPenaltiesAndViolations.violationAmount    = null;

            string parameters = ParametersToJSON(propertyBBL);

            using (WebDataEntities webDBEntities = new WebDataEntities())
            {
                using (var webDBEntitiestransaction = webDBEntities.Database.BeginTransaction())
                {
                    try
                    {
                        //check if data available
                        WebDataDB.DOBViolation dobViolationObj = webDBEntities.DOBViolations.FirstOrDefault(i => i.BBL == propertyBBL);

                        // record in database and data is not stale
                        if (dobViolationObj != null && DateTime.UtcNow.Subtract(dobViolationObj.LastUpdated).Days <= 15)
                        {
                            dPenaltiesAndViolations.civilPenaltyAmount = dobViolationObj.DOBCivilPenalties;
                            dPenaltiesAndViolations.violationAmount    = dobViolationObj.ECBViolationAmount;
                            dPenaltiesAndViolations.status             = RequestStatus.Success.ToString();

                            DAL.DataRequestLog.InsertForCacheAccess(webDBEntities, propertyBBL, RequestTypeId, externalReferenceId, jobId, parameters);
                        }
                        else
                        {   //check if pending request in queue
                            DataRequestLog dataRequestLogObj = DAL.DataRequestLog.GetPendingRequest(webDBEntities, propertyBBL, RequestTypeId, parameters);

                            if (dataRequestLogObj == null) //No Pending Request Create New Request
                            {
                                string requestStr = RequestResponseBuilder.RequestObjects.RequestData.ECBviolationAndDOBCivilPenalties(propertyBBL);

                                Request requestObj = DAL.Request.Insert(webDBEntities, requestStr, RequestTypeId, priority, jobId);

                                dataRequestLogObj = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, propertyBBL, RequestTypeId, requestObj.RequestId,
                                                                                               externalReferenceId, jobId, parameters);

                                dPenaltiesAndViolations.status    = RequestStatus.Pending.ToString();
                                dPenaltiesAndViolations.requestId = requestObj.RequestId;
                            }
                            else //Pending request in queue
                            {
                                dPenaltiesAndViolations.status = RequestStatus.Pending.ToString();
                                //Send the RequestId for the pending request back
                                dPenaltiesAndViolations.requestId = dataRequestLogObj.RequestId;
                                dataRequestLogObj = DAL.DataRequestLog.InsertForWebDataRequest(webDBEntities, propertyBBL, RequestTypeId,
                                                                                               dataRequestLogObj.RequestId.GetValueOrDefault(), externalReferenceId, jobId, parameters);
                            }
                        }
                        webDBEntitiestransaction.Commit();
                    }
                    catch (Exception e)
                    {
                        webDBEntitiestransaction.Rollback();
                        dPenaltiesAndViolations.status = RequestStatus.Error.ToString();
                        DAL.DataRequestLog.InsertForFailure(propertyBBL, RequestTypeId, externalReferenceId, jobId, parameters);
                        Common.Logs.log().Error(string.Format("Exception encountered processing {0} with externalRefId {1}{2}",
                                                              propertyBBL, externalReferenceId, Common.Logs.FormatException(e)));
                    }
                }
            }
            return(dPenaltiesAndViolations);
        }