using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http; using System.Web.Http.Description; using System.Web.Http.OData; using iBemsDataService; using iBemsDataService.Model; namespace iBemsDataService.Controllers { public class CheckGroupTargetFacilityController : ODataController { private iBemsEntities db = new iBemsEntities(); // GET: odata/Facility [Queryable] public IQueryable GetCheckGroupTargetFacility() { // 2019.07.12 Uri uri = Request.RequestUri; var uriQuery = HttpUtility.ParseQueryString(uri.Query); int siteId; if (int.TryParse(uriQuery.Get("SiteId"), out siteId) == false) { throw new Exception("Not Found Parameters."); } var query = from t in db.FmsWorkScheduleToFacility from f in db.CmFacility from mu in db.CmUser from su in db.CmUser from fc in db.FmsFacilityCodeClass from sc in db.FmsFacilityCodeClass from tc in db.FmsFacilityCodeClass join b in db.CmBuilding on f.BuildingId equals b.BuildingId into gb from subBuilding in gb.DefaultIfEmpty() join l in db.CmZone on f.ZoneId equals l.ZoneId into gl from subZone in gl.DefaultIfEmpty() join fl in db.CmFloor on f.FloorId equals fl.FloorId into gf from subFloor in gf.DefaultIfEmpty() join pf in db.CmFacility on f.ParentFacilityCode equals pf.FacilityCode into gpf from subParentFacility in gpf.DefaultIfEmpty() where t.SiteId == siteId && // 2019.07.12 t.SiteId == f.SiteId && t.FacilityCode == f.FacilityCode && f.MainContactorUserId == mu.UserId && f.SubContactorUserId == su.UserId && f.FirstClassId == fc.FacilityClassId && f.SecondClassId == sc.FacilityClassId && f.ThirdClassId == tc.FacilityClassId select new TargetFacility { SiteId = f.SiteId , WorkScheduleId = t.WorkScheduleId , FacilityCode = f.FacilityCode , FirstClassId = f.FirstClassId , SecondClassId = f.SecondClassId , ThirdClassId = f.ThirdClassId , FirstClassName = fc.Name , SecondClassName = sc.Name , ThirdClassName = tc.Name , Name = f.Name , Nickname = f.Nickname , ParentFacilityName = subParentFacility.Name , ManufactureModel = f.ManufactureModel , MainContactorUserName = mu.Name , SubContactorUserName = su.Name , BuildingName = (subBuilding.Name == null) ? string.Empty : subBuilding.Name , ZoneName = (subZone.Name == null) ? string.Empty : subZone.Name , FloorName = (subFloor.Name == null) ? string.Empty : subFloor.Name }; return query; } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } //private bool CheckGroupTargetFacilityExists( int id , string facilityCode ) //{ // return db.CmFacility.Count( e => e.SiteId == id && e.FacilityCode == facilityCode ) > 0; //} } public class TargetFacility { public TargetFacility() { } [Key] public int SiteId { get; set; } [Key] public int WorkScheduleId { get; set; } public int FacilityType { get; set; } [Key] public int FacilityCode { get; set; } public Nullable FirstClassId { get; set; } public Nullable SecondClassId { get; set; } public Nullable ThirdClassId { get; set; } public string FirstClassName { get; set; } public string SecondClassName { get; set; } public string ThirdClassName { get; set; } public string DeviceType { get; set; } public string ParentFacilityCode { get; set; } public string ParentFacilityName { get; set; } public string Name { get; set; } public string Nickname { get; set; } public string Manufacturer { get; set; } public string ManufactureModel { get; set; } public Nullable BuildingId { get; set; } public Nullable FloorId { get; set; } public Nullable ZoneId { get; set; } public string BuildingName { get; set; } public string FloorName { get; set; } public string ZoneName { get; set; } public string MainContactorUserId { get; set; } public string SubContactorUserId { get; set; } public string MainContactorUserName { get; set; } public string SubContactorUserName { get; set; } public Nullable IsUse { get; set; } public Nullable SortOrderNo { get; set; } } }