Exemple #1
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));
            }
        }
Exemple #2
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;
                    }
                }
            }
        }
Exemple #3
0
        public static bool isAnyCallBack(Common.Context appContext)
        {
            switch (appContext.getUserName().ToLower())
            {
            case "portal":
                return(true);

            default:
                return(false);
            }
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        /// <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);
            }
        }
Exemple #7
0
        /// <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);
            }
        }
Exemple #8
0
        /// <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);
            }
        }
Exemple #9
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);
                    }
                }
            }
        }
        /// <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);
                    }
                }
            }
        }
Exemple #11
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);
                    }
                }
            }
        }
Exemple #12
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);
                    }
                }
            }
        }