123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.DataAnnotations;
- using System.Data;
- using System.Data.Entity;
- using System.Data.Entity.Infrastructure;
- using System.Diagnostics;
- 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 FacilityController : ODataController
- {
- private iBemsEntities db = new iBemsEntities();
- // GET: odata/Facility
- [Queryable]
- public IQueryable<Facility> GetFacility()
- {
- // 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 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 f.SiteId == siteId &&
- f.MainContactorUserId == mu.UserId &&
- f.SubContactorUserId == su.UserId &&
- f.FirstClassId == fc.FacilityClassId &&
- f.SecondClassId == sc.FacilityClassId &&
- f.ThirdClassId == tc.FacilityClassId
- select new Facility
- {
- SiteId = f.SiteId ,
- 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 ,
- BuildingId = f.BuildingId,
- FloorId = f.FloorId,
- ZoneId = f.ZoneId,
- BuildingName = (subBuilding.Name == null) ? string.Empty : subBuilding.Name ,
- ZoneName = (subZone.Name == null) ? string.Empty : subZone.Name ,
- FloorName = (subFloor.Name == null) ? string.Empty : subFloor.Name
- };
- Trace.WriteLine( "test" );
- return query;
- }
- [Queryable]
- public IQueryable<TargetFacility> GetTargetFacility()
- {
- // 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 &&
- 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;
- }
- /*
- // GET: api/Facilitiy/5
- [ResponseType(typeof(CmFacility))]
- public IHttpActionResult GetCmFacility(int id)
- {
- CmFacility cmFacility = db.CmFacility.Find(id);
- if (cmFacility == null)
- {
- return NotFound();
- }
- return Ok(cmFacility);
- }
- // PUT: api/Facilitiy/5
- [ResponseType(typeof(void))]
- public IHttpActionResult PutCmFacility(int id, CmFacility cmFacility)
- {
- if (!ModelState.IsValid)
- {
- return BadRequest(ModelState);
- }
- if (id != cmFacility.SiteId)
- {
- return BadRequest();
- }
- db.Entry(cmFacility).State = EntityState.Modified;
- try
- {
- db.SaveChanges();
- }
- catch (DbUpdateConcurrencyException)
- {
- if (!CmFacilityExists(id))
- {
- return NotFound();
- }
- else
- {
- throw;
- }
- }
- return StatusCode(HttpStatusCode.NoContent);
- }
- // POST: api/Facilitiy
- [ResponseType(typeof(CmFacility))]
- public IHttpActionResult PostCmFacility(CmFacility cmFacility)
- {
- if (!ModelState.IsValid)
- {
- return BadRequest(ModelState);
- }
- db.CmFacility.Add(cmFacility);
- try
- {
- db.SaveChanges();
- }
- catch (DbUpdateException)
- {
- if (CmFacilityExists(cmFacility.SiteId))
- {
- return Conflict();
- }
- else
- {
- throw;
- }
- }
- return CreatedAtRoute("DefaultApi", new { id = cmFacility.SiteId }, cmFacility);
- }
- // DELETE: api/Facilitiy/5
- [ResponseType(typeof(CmFacility))]
- public IHttpActionResult DeleteCmFacility(int id)
- {
- CmFacility cmFacility = db.CmFacility.Find(id);
- if (cmFacility == null)
- {
- return NotFound();
- }
- db.CmFacility.Remove(cmFacility);
- db.SaveChanges();
- return Ok(cmFacility);
- }
- */
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- db.Dispose();
- }
- base.Dispose(disposing);
- }
- private bool FacilityExists(int id , int facilityCode)
- {
- return db.CmFacility.Count( e => e.SiteId == id && e.FacilityCode == facilityCode ) > 0;
- }
- }
- public class Facility
- {
- public Facility()
- {
- }
- [Key]
- public int SiteId { get; set; }
- public int FacilityType { get; set; }
- [Key]
- public int FacilityCode { get; set; }
- public Nullable<int> FirstClassId { get; set; }
- public Nullable<int> SecondClassId { get; set; }
- public Nullable<int> 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<int> BuildingId { get; set; }
- public Nullable<int> FloorId { get; set; }
- public Nullable<int> 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<bool> IsUse { get; set; }
- public Nullable<int> SortOrderNo { get; set; }
- }
- }
|