using System;
using System.Collections;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Http;
using System.Web.Http.Description;
using DevExpress.Office.Utils;
using iBemsDataService.Model;
using iBemsDataService.Util;

namespace iBemsDataService.Controllers
{
 
    public class FmsWorkOrderToFacilityController : ApiController
    {
        private iBemsEntities db = new iBemsEntities();


        // POST: api/FmsWorkOrderToToFacility
        [ResponseType( typeof ( void ) )]
        public IHttpActionResult PostFmsWorkOrderToFacility(
            List<WorkOrderToFacility> workOrderToFacilities )
        {
            if ( !ModelState.IsValid )
            {
                return BadRequest( ModelState );
            }

            Uri uri = Request.RequestUri;
            var uriQuery = HttpUtility.ParseQueryString( uri.Query );
            int siteId, workRequestId;
            if( int.TryParse( uriQuery.Get( "SiteId" ) , out siteId ) == false ||
                int.TryParse( uriQuery.Get( "WorkRequestId" ) , out workRequestId ) == false )
            {
                return BadRequest("Not Found Parameters.");
            }

            var query = from d in db.FmsWorkOrderToFacility
                        where d.SiteId == siteId &&
                              d.WorkRequestId == workRequestId
                        select d;

            var qm = new QueryManager<FmsWorkOrderToFacility>( db );
            try
            {
                qm.DeleteAndInsert( db.FmsWorkOrderToFacility , workOrderToFacilities , query );
            }
            catch ( Exception )
            {                    
                throw;
            }


            return StatusCode( HttpStatusCode.NoContent );
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }

        private bool FmsWorkOrderToFacilityExists( int id )
        {
            return db.FmsWorkOrderToFacility.Count( e => e.SiteId == id ) > 0;
        }
    }

    public class WorkOrderToFacility
    {
        public int SiteId { get; set; }
        public int WorkRequestId { get; set; }
        public int FacilityCode { get; set; }
    };
}