public IHttpActionResult PostManualComparables(string subjectBBL, [FromBody] BAL.ManualCMASelection manualCMA) { if (manualCMA == null) { return(this.BadRequest("Malformed body")); } if (String.IsNullOrEmpty(manualCMA.username)) { return(this.BadRequest("Username cannot be null or empty")); } if (!BAL.BBL.IsValidFormat(subjectBBL)) { return(this.BadRequest("Incorrect BBL - Borough Block Lot number")); } if (manualCMA.comparables == null || manualCMA.comparables.Count == 0) { return(this.BadRequest("No sales selected. Please select one or more sales")); } if (manualCMA.additionalFilter != null) { if ((manualCMA.additionalFilter.gLAMin == null) && (manualCMA.additionalFilter.gLAMax != null)) { manualCMA.additionalFilter.gLAMin = manualCMA.additionalFilter.gLAMax; } if ((manualCMA.additionalFilter.gLAMin != null) && (manualCMA.additionalFilter.gLAMax == null)) { manualCMA.additionalFilter.gLAMax = manualCMA.additionalFilter.gLAMin; } if ((manualCMA.additionalFilter.lotAreaMin == null) && (manualCMA.additionalFilter.lotAreaMax != null)) { manualCMA.additionalFilter.lotAreaMin = manualCMA.additionalFilter.lotAreaMax; } if ((manualCMA.additionalFilter.lotAreaMin != null) && (manualCMA.additionalFilter.lotAreaMax == null)) { manualCMA.additionalFilter.lotAreaMax = manualCMA.additionalFilter.lotAreaMin; } } else { Common.Logs.log().Warn(string.Format("Additional Filter for Manual CMA for {0} by {1} is NULL", subjectBBL, manualCMA.username)); } if (manualCMA.basicFilter == null) { Common.Logs.log().Warn(string.Format("Basic Filter for Manual CMA for {0} by {1} is NULL", subjectBBL, manualCMA.username)); } try { var result = BAL.CMA.SaveManualComparables(subjectBBL, manualCMA); if (result == null) { throw new Exception("Internal Error function should not return null"); } return(Ok(result)); } catch (Exception e) { Common.Logs.log().Error(string.Format("Exception encountered for BBL: {0}{1}", subjectBBL, Common.Logs.FormatException(e))); return(Common.HttpResponse.InternalError(Request, "Internal Error in processing request")); } }
public static long SaveCMARun(string subjectBBL, BAL.ManualCMASelection manualCMA) { using (NYCMAEntities nycmaE = new NYCMAEntities()) { using (var nycmaEntitiestransaction = nycmaE.Database.BeginTransaction()) { NYCMADB.CMARun cmaRun = new NYCMADB.CMARun(); cmaRun.UserName = manualCMA.username; cmaRun.RunDateTime = DateTime.UtcNow; cmaRun.RunType = (int)CMARunType.Manual; cmaRun.CMAType = manualCMA.intent; cmaRun.BBL = subjectBBL; cmaRun.AlgorithmType = "F"; if (manualCMA.basicFilter != null) { cmaRun.MonthsOffset = manualCMA.basicFilter.monthOffset; cmaRun.BuildingClassMatch = manualCMA.basicFilter.classMatchType; cmaRun.MinSalePrice = Convert.ToDecimal(manualCMA.basicFilter.minSalePrice); cmaRun.MaxSalePrice = Convert.ToDecimal(manualCMA.basicFilter.maxSalePrice); cmaRun.SameNeighborhood = manualCMA.basicFilter.sameNeighborhood; cmaRun.SameSchoolDistrict = manualCMA.basicFilter.sameSchoolDistrict; cmaRun.SameZip = manualCMA.basicFilter.sameZip; cmaRun.SameStreet = manualCMA.basicFilter.sameStreet; cmaRun.SameBlock = manualCMA.basicFilter.sameBlock; cmaRun.IsNotIntraFamily = manualCMA.basicFilter.isNotIntraFamily; cmaRun.BuyerIsCompany = manualCMA.basicFilter.isBuyeraCompany; cmaRun.SellerIsCompany = manualCMA.basicFilter.isSelleraCompany; } if (manualCMA.additionalFilter != null) { cmaRun.Distance = Convert.ToDecimal(manualCMA.additionalFilter.distance); cmaRun.GLAHiPercentage = manualCMA.additionalFilter.gLAMax; cmaRun.GLALoPercentage = manualCMA.additionalFilter.gLAMin; cmaRun.LAHiPercentage = manualCMA.additionalFilter.lotAreaMax; cmaRun.LALoPercentage = manualCMA.additionalFilter.lotAreaMin; cmaRun.BuildingFrontageHiRange = manualCMA.additionalFilter.buildingFrontageMax; cmaRun.BuildingFrontageLoRange = manualCMA.additionalFilter.buildingFrontageMin; cmaRun.BuildingDepthHiRange = manualCMA.additionalFilter.buildingDepthMax; cmaRun.BuildingDepthLoiRange = manualCMA.additionalFilter.buildingDepthMin; cmaRun.LotFrontageHiRange = manualCMA.additionalFilter.lotFrontageMax; cmaRun.LotFrontageLoRange = manualCMA.additionalFilter.lotFrontageMin; cmaRun.LotDepthHiRange = manualCMA.additionalFilter.lotDepthMax; cmaRun.LotDepthLoRange = manualCMA.additionalFilter.lotDepthMin; } try { cmaRun = nycmaE.CMARuns.Add(cmaRun); nycmaE.SaveChanges(); foreach (var comp in manualCMA.comparables) { NYCMADB.CMAComparable cmaComp = new NYCMADB.CMAComparable(); cmaComp.CMARunId = cmaRun.CMARunId; cmaComp.ComparableBBL = comp.BBLE; cmaComp.SaleDate = comp.DeedDate.GetValueOrDefault(); cmaComp = nycmaE.CMAComparables.Add(cmaComp); } nycmaE.SaveChanges(); nycmaEntitiestransaction.Commit(); return(cmaRun.CMARunId); } 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(0); } catch (Exception e) { nycmaEntitiestransaction.Rollback(); Common.Logs.log().Error(string.Format("Exception encountered saving manual CMARun for {} run by {2}", subjectBBL, manualCMA.username, Common.Logs.FormatException(e))); return(0); } } } }