using BLL.DAL;
using Json;
using Model;
using Model.MessageModel;
using Model.WmsModel;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Helpers;
using System.Web.Http;
using System.Web.Script.Serialization;

namespace wms.Controllers
{
    //[RoutePrefix("api/WCSApi")]
    public class WCSApiController : ApiController
    {

        //private WSChatController _chat;
        //public WCSApiController(WSChatController chat)
        //{
        //    _chat = chat;
        //}

        /// <summary>
        /// WMS多条任务下发接口  Liudl
        /// </summary>
        /// <param name="model">任务信息</param>
        /// <returns></returns>
        //[HttpPost]aaaa
        //public object AddTasks(Tasks model)
        //{
        //    DALWMSApi wcsApi = new DALWMSApi();
        //    return wcsApi.AddWcsTasks(model);
        //}
        [HttpPost]
        public object AddTasks(dynamic model)
        {
            //WebStocket发送消息
            WSChatController wSChat = new WSChatController();

            JsonObject obj = new JsonObject();
            var aa = JsonConvert.SerializeObject(model);
            var taskList = JsonConvert.DeserializeObject<List<WCSTasks>>(aa);
            DALWMSApi wcsApi = new DALWMSApi();
            WCSResultModel bb = new WCSResultModel();
            if (taskList != null)
            {
                foreach (var item in taskList)
                {
                    bb = wcsApi.AddWcsTasks(item);
                    //_chat.Get();
                    // 通知任务界面任务已存在更新 请更新界面
                    wSChat.AlarmInformation("1");
                }
            }
            return bb;
        }

        /// <summary>
        /// WMS单条任务下发接口 Liudl
        /// </summary>
        /// <param name="model">任务信息</param>
        /// <returns></returns>
        [HttpPost]
        public object AddTask(WCSTasks model)
        {
            DALWMSApi wcsApi = new DALWMSApi();
            model.Type = model.TaskType;
            var data = wcsApi.AddWcsTask(model);
            if (data.stateCode == "1")
            {
                data.stateCode = "0";
            }
            return data;
        }

        /// <summary>
        /// wms多条任务取消\完成接口
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public object FinshTasks(dynamic model)
        {
            //WebStocket发送消息
            WSChatController wSChat = new WSChatController();

            JsonObject obj = new JsonObject();
            var aa = JsonConvert.SerializeObject(model);
            var taskList = JsonConvert.DeserializeObject<WCSTasks>(aa);
            DALWMSApi wcsApi = new DALWMSApi();
            WCSResultModel bb = new WCSResultModel();
            if (taskList != null)
            {
                WCSTasks task = taskList;
                bb = wcsApi.FinshTasks(taskList);
                //_chat.Get();
                // 通知任务界面任务已存在更新 请更新界面
                wSChat.AlarmInformation("1");

                //通知设备
                DeviceMessage message = new DeviceMessage();
                message.Message = "任务更新";
                message.Status = "2";
                message.RoadwayNo = task.Type == "0" ? task.EndRoadway : task.StartRoadway;
                wSChat.AlarmInformationModel(message);
            }
            return bb;
        }

        /// <summary>
        /// WMS下发修改储位状态
        /// </summary>
        /// <param name="model">储位信息</param>
        /// <returns></returns>
        [HttpPost]
        public object EditLocatStatus(List<WmsLocat> model)
        {
            DALWMSApi wcsApi = new DALWMSApi();
            WCSResultModel bb = new WCSResultModel();

            bb = wcsApi.EditLocaetStatus(model);

            return bb;
        }

    }

}