public static void QueueLGURefreshForArea(DbGeometry oldShape, DbGeometry newShape) { DbGeometry loadGeneratingUnitRefreshAreaGeometry; if (oldShape == null && newShape == null) { throw new InvalidOperationException("At least one input to QueueLGURefreshForArea must not be null."); } if (oldShape == null) { loadGeneratingUnitRefreshAreaGeometry = newShape; } else if (newShape == null) { loadGeneratingUnitRefreshAreaGeometry = oldShape; } else { loadGeneratingUnitRefreshAreaGeometry = oldShape.Union(newShape); } var loadGeneratingUnitRefreshArea = new LoadGeneratingUnitRefreshArea(loadGeneratingUnitRefreshAreaGeometry); HttpRequestStorage.DatabaseEntities.LoadGeneratingUnitRefreshAreas.Add(loadGeneratingUnitRefreshArea); HttpRequestStorage.DatabaseEntities.SaveChanges(); BackgroundJob.Enqueue(() => ScheduledBackgroundJobLaunchHelper.RunLoadGeneratingUnitRefreshJob(loadGeneratingUnitRefreshArea.LoadGeneratingUnitRefreshAreaID)); }
public IHttpActionResult SumAllProjectImpact(int start, int count, string prov_code = "", string amphur_code = "", string branch_code = "", string subject_name = "") { try { var _projects = tdmEntities.PROJECT_IMPACT.Where(x => !x.IS_DELETED && x.IS_PUBLISHED).ToList(); var projects = _projects.Where(x => (subject_name == null || x.SUBJECT_NAME.Contains(subject_name)) && (prov_code == null || prov_code.Length == 0 || (( tdaEntities.PROJECT_AREA_47.Any(y => y.SUBJECT_ID.Equals(x.SUBJECT_ID) && y.PROV_CODE.Equals(prov_code)) || tdaEntities.PROJECT_AREA_48.Any(y => y.SUBJECT_ID.Equals(x.SUBJECT_ID) && y.PROV_CODE.Equals(prov_code))))) ).ToList().Select(x => Mapper.Map <PROJECT_IMPACT_ViewModel>(x)).ToList(); List <dynamic> result = new List <dynamic>(); foreach (var c in projects) { List <PROJECT_AREA_ViewModel> projectArea = tdaEntities.PROJECT_AREA_47.Where(x => x.SUBJECT_ID.Equals(c.SUBJECT_ID)).ToList().Select(x => Mapper.Map <PROJECT_AREA_ViewModel>(x)).ToList(); projectArea.AddRange(tdaEntities.PROJECT_AREA_48.Where(x => x.SUBJECT_ID.Equals(c.SUBJECT_ID)).ToList().Select(x => Mapper.Map <PROJECT_AREA_ViewModel>(x)).ToList()); c.PROVINCE = projectArea.GroupBy(x => x.PROV_CODE).Select(x => Mapper.Map <PROVINCE_ViewModel>(tdaEntities.PROVINCEs.Where(y => y.PRO_C.Equals(x.Key)).First())).ToList(); int statusId = projectArea.Count() == 0 ? 1 : (projectArea.Any(x => x.STATUS_PROCESS.Equals("N")) ? 2 : 3); var PROJECT_AREA = projectArea.Select(x => new { x.OBJECTID, x.SUBJECT_ID, x.PROV_CODE, x.STATUS_PROCESS, SHAPE = x.SHAPE.ToString() }).ToList(); DbGeometry PROJECT_AREA_SHAPE = null; if (projectArea.Count() > 0) { PROJECT_AREA_SHAPE = projectArea.ElementAt(0).SHAPE; } for (var i = 1; i < projectArea.Count(); i++) { var temp = PROJECT_AREA_SHAPE.Union(projectArea.ElementAt(i).SHAPE); if (temp != null) { PROJECT_AREA_SHAPE = temp; } } if (statusId == 3) { ////////////////////////////////// if (amphur_code != null && amphur_code.Length == 0) { amphur_code = null; } if (branch_code != null && branch_code.Length == 0) { branch_code = null; } List <PROJECT_PARCEL_47> projectParcel47 = tdaEntities.PROJECT_PARCEL_47.Where(x => x.SUBJECT_ID.Equals(c.SUBJECT_ID) && (amphur_code == null || x.AMPHUR_CODE.Equals(amphur_code)) && (branch_code == null || x.BRANCH_CODE.Equals(branch_code))).ToList(); List <PROJECT_PARCEL_48> projectParcel48 = tdaEntities.PROJECT_PARCEL_48.Where(x => x.SUBJECT_ID.Equals(c.SUBJECT_ID) && (amphur_code == null || x.AMPHUR_CODE.Equals(amphur_code)) && (branch_code == null || x.BRANCH_CODE.Equals(branch_code))).ToList(); List <PARCEL_ViewModel> resultParcel = new List <PARCEL_ViewModel>(); if (projectParcel47.Count() == 0 && projectParcel48.Count() == 0) { //continue; } foreach (var projectParcel in projectParcel47) { var bufferQuery = $@"SELECT [OBJECTID],[OGR_FID],[PARCEL_TYPE],[UTMMAP1],[UTMMAP2],[UTMMAP3],[UTMMAP4],[UTMSCALE],[LAND_NO],[LAND_TH],[LAND_NAME],[ACTION_STATUS],[LAND_AREA],[BRANCH_CODE],[BRANCH_NAME],[CHANGWAT_CODE],[CHANGWAT_NAME],[AMPHUR_CODE],[AMPHUR_NAME],[TUMBON_CODE],[TUMBON_NAME],[CHANOD_NO],[SURVEY_NO],[TABLE_3_SEQ],[ACCOUNTING_PERIOD],[PARCEL_SHAPE],[PARCEL_RN],[STREET_RN],[BLOCK_ZONE_RN],[BLOCK_PRICE_RN],[BLOCK_FIX_RN],[BLOCK_BLUE_RN],[PREV_EVAPRICE],[CURR_EVAPRICE],[DATE_CREATED],[USER_CREATED],[DATE_UPDATED],[USER_UPDATED],[SHAPE],[GDB_GEOMATTR_DATA],[EDIT_FLAG] FROM [TDASSET].[tdadmin].[PARCEL_47_{projectParcel.CHANGWAT_CODE}] WHERE [BRANCH_CODE]='{projectParcel.BRANCH_CODE}' AND [PARCEL_RN]={projectParcel.PARCEL_RN} "; //if (amphur_code != null && amphur_code.Length > 0) //bufferQuery = $@"{bufferQuery} AND [AMPHUR_CODE] = '{amphur_code}'"; bufferQuery = $@"IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'tdadmin' AND TABLE_NAME = 'PARCEL_47_{projectParcel.CHANGWAT_CODE}')) BEGIN {bufferQuery} END"; resultParcel.AddRange(tdaEntities.Database.SqlQuery <PARCEL_ViewModel>(bufferQuery).ToList()); } foreach (var projectParcel in projectParcel48) { var bufferQuery = $@"SELECT [OBJECTID],[OGR_FID],[PARCEL_TYPE],[UTMMAP1],[UTMMAP2],[UTMMAP3],[UTMMAP4],[UTMSCALE],[LAND_NO],[LAND_TH],[LAND_NAME],[ACTION_STATUS],[LAND_AREA],[BRANCH_CODE],[BRANCH_NAME],[CHANGWAT_CODE],[CHANGWAT_NAME],[AMPHUR_CODE],[AMPHUR_NAME],[TUMBON_CODE],[TUMBON_NAME],[CHANOD_NO],[SURVEY_NO],[TABLE_3_SEQ],[ACCOUNTING_PERIOD],[PARCEL_SHAPE],[PARCEL_RN],[STREET_RN],[BLOCK_ZONE_RN],[BLOCK_PRICE_RN],[BLOCK_FIX_RN],[BLOCK_BLUE_RN],[PREV_EVAPRICE],[CURR_EVAPRICE],[DATE_CREATED],[USER_CREATED],[DATE_UPDATED],[USER_UPDATED],[SHAPE],[GDB_GEOMATTR_DATA],[EDIT_FLAG] FROM [TDASSET].[tdadmin].[PARCEL_48_{projectParcel.CHANGWAT_CODE}] WHERE [BRANCH_CODE]={projectParcel.BRANCH_CODE} AND [PARCEL_RN]={projectParcel.PARCEL_RN}"; //if (amphur_code != null && amphur_code.Length > 0) //bufferQuery = $@"{bufferQuery} AND [AMPHUR_CODE] = '{amphur_code}'"; bufferQuery = $@"IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'tdadmin' AND TABLE_NAME = 'PARCEL_47_{projectParcel.CHANGWAT_CODE}')) BEGIN {bufferQuery} END"; resultParcel.AddRange(tdaEntities.Database.SqlQuery <PARCEL_ViewModel>(bufferQuery).ToList()); } DbGeometry PARCEL_SHAPE = null; DbGeometry PARCEL_IMPACT_SHAPE = null; int parcelImpactCount = 0; if (resultParcel.Count() > 0) { PARCEL_SHAPE = resultParcel.ElementAt(0).SHAPE; if (PROJECT_AREA_SHAPE != null && PROJECT_AREA_SHAPE.Intersects(PARCEL_SHAPE)) { PARCEL_IMPACT_SHAPE = PARCEL_SHAPE; parcelImpactCount = 1; } } for (var i = 1; i < resultParcel.Count(); i++) { var SHAPE = resultParcel.ElementAt(i).SHAPE; if (PROJECT_AREA_SHAPE != null && PROJECT_AREA_SHAPE.Intersects(SHAPE)) { var temp2 = PARCEL_IMPACT_SHAPE == null ? SHAPE : PARCEL_IMPACT_SHAPE.Union(SHAPE); if (temp2 != null) { PARCEL_IMPACT_SHAPE = temp2; parcelImpactCount++; } } var temp = PARCEL_SHAPE.Union(SHAPE); if (temp != null) { PARCEL_SHAPE = temp; } } ///////////////////////////////// dynamic project = new { c.ID, c.SUBJECT_ID, c.SUBJECT_NAME, c.PUBLISH_DATE, c.CREATE_DATE, c.CREATE_BY, c.UPDATE_DATE, c.UPDATE_BY, c.PROVINCE, c.IS_PUBLISHED, STATUS = tdmEntities.STATUS_IMPACT.Where(y => y.ID == statusId).First(), PARCEL_COUNT = resultParcel.Count, PARCEL_PRICE = '-', PROJECT_AREA, PARCEL_SHAPE = PARCEL_SHAPE != null?PARCEL_SHAPE.ToString() : null, PROJECT_AREA_SHAPE = PROJECT_AREA_SHAPE != null?PROJECT_AREA_SHAPE.ToString() : null, PARCEL_AREA = resultParcel.Select(x => new SHAPE_ViewModel(x.SHAPE)).ToList(), PARCEL_IMPACT_SHAPE = PARCEL_IMPACT_SHAPE != null?PARCEL_IMPACT_SHAPE.ToString() : null, PARCEL_IMPACT_COUNT = parcelImpactCount }; result.Add(project); } } result = result.Skip(start).Take(count).ToList(); return(Json(result, jsonSetting)); } catch (Exception ex) { return(Json(ex)); } }