using EasyBL.WebApi.Filters;
using EasyBL.WebApi.Message;
using EasyBL.WEBAPP;
using EasyBL.WEBAPP.ShowEasy;
using EasyBL.WEBAPP.SYS;
using Entity.ShowEasyDtos;
using Entity.Sugar;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace WebApp.Controllers
{
    public class OnsiteController : ApiController
    {

        //所有服務Api
        [HttpGet]
        public HttpResponseMessage AllCategories(string Lang)
        {
            return new OnsiteService().GetAllCategoryFilterList(Lang);
        }

        //服務主列表服務Api
        [HttpGet]
        public HttpResponseMessage Categories(string Lang)
        {
            return new OnsiteService().GetCategoryFilterList(Lang);
        }

        //所有位置(州 國家 城市)
        [HttpGet]
        public HttpResponseMessage AllLocations(string Lang)
        {
            return new OnsiteService().GetAllLocationFilterList(Lang);
        }

        //取得所有Onsite服務的位置
        [HttpGet]
        public HttpResponseMessage Locations(string Lang)
        {
            return new OnsiteService().GetLocationFilterList(Lang);
        }

        //服務列表分頁查詢
        [HttpGet]
        public HttpResponseMessage ServiceLists(string Lang,int PageIndex,int PageSize,string SortField,string SortOrder,string KeyWord,string Categories,string Locations,string Currency,int MinPrice,int MaxPrice)
        {
            return new OnsiteService().GetOnsiteByPage( Lang,  PageIndex,  PageSize,  SortField,  SortOrder,  KeyWord,  Categories,  Locations,  Currency,  MinPrice,  MaxPrice);
        }
        //詳情頁圖片輪播
        [HttpGet]
        public HttpResponseMessage BannerFiles(string Lang,string ServiceID)
        {
            return new OnsiteService().GetBannerFiles(Lang, ServiceID);
        }


        //包裝類型
        [HttpGet]
        public HttpResponseMessage PackingTypes(string Lang)
        {
            return new OnsiteService().GetPackingTypes(Lang);
        }

        //領取地城市
        [HttpGet]
        public HttpResponseMessage ReceivingCitys(string Lang)
        {
            return new OnsiteService().GetReceivingCitys(Lang);
        }

        //服務項目
        [HttpGet]
        public HttpResponseMessage ServiceItems(string Lang, string ServiceID)
        {
            return new OnsiteService().GetServiceItems(Lang, ServiceID);
        }

        //展覽年份
        [HttpGet]
        public HttpResponseMessage ExtensionYear(string Lang, string ServiceID)
        {
            return new OnsiteService().GetExtensionYears(Lang, ServiceID);
        }

        //展覽月份
        [HttpGet]
        public HttpResponseMessage ExtensionMonth(string Lang)
        {
            return new OnsiteService().GetExtensionMonths(Lang);
        }

        //展覽列表
        [HttpGet]
        public HttpResponseMessage Exhibitions(string Lang,string ServiceID,string Year,string Month)
        {
            return new OnsiteService().QueryExhibitions(Lang, ServiceID);
        }

        //服務細項目
        [HttpGet]
        public HttpResponseMessage Info(string Lang, string ServiceID)
        {

            return new OnsiteService().GetOneOnsiteServiceInfo(Lang, ServiceID);
        }

        //服務費用List
        [HttpGet]
        public HttpResponseMessage InfoItem(string Lang, string ServiceID)
        {

            return new OnsiteService().GetOneOnsiteItem(Lang, ServiceID);
        }

        //卡車類型
        [HttpGet]
        public HttpResponseMessage TruckTypes(string Lang)
        {
            return new OnsiteService().GetTruckTypes(Lang);
        }

        //訂單問題
        [HttpGet]
        public HttpResponseMessage OrderQuestions(string Lang,string ServiceID)
        {
            return new OnsiteService().GetOrderQuestions(Lang ,ServiceID);
        }

        //支付方式
        [HttpGet]
        public HttpResponseMessage PayTypes(string Lang, string ServiceID)
        {
            return new OnsiteService().GetPayTypes(Lang, ServiceID);
        }


        //會員個人訊息查詢
        [HttpGet]
        [SEApiSecurityFilter]
        public HttpResponseMessage MemberInfo()
        {
            //根據參數取得Member的詳細信息,調用時需要在Header中添加token相關信息,包括orgId,userid,timestamp,token
            //需要驗證的token相關信息的Api,添加上  [SEApiSecurityFilter]即可

            var SEToken = SETokenUtil.GetToken(this.Request);

            return new OnsiteService().GetMemberInfo(SEToken.OrgID, SEToken.Account);
        }

        //會員個人訊息更新
        [HttpPost]
        [SEApiSecurityFilter]
        public HttpResponseMessage Member([FromBody] MemberDTO Member)
        {

            var SEToken = SETokenUtil.GetToken(this.Request);
            Member.Account = SEToken.Account;

            return new OnsiteService().UpdateMember(Member);
        }
        //國家列表
        [HttpGet]
        public HttpResponseMessage Countries(string Lang)
        {
            return new LocationService().GetCountryList(Lang, "");
        }
        //公司信息
        [HttpPost]
        [SEApiSecurityFilter]
        public HttpResponseMessage Company([FromBody] SETB_CRM_Company Company)
        {
           var SEToken = SETokenUtil.GetToken(this.Request);
            Company.Account = SEToken.Account;
            return new CompanyService().SaveCompany(Company);

        }

        //預約信息
        [HttpPost]
        [SEApiSecurityFilter]
        public HttpResponseMessage Booking([FromBody] BookingOrderDTO Booking)
        {
            var SEToken = SETokenUtil.GetToken(this.Request);
            return new OnsiteService().InsertBooking(Booking, SEToken.Account, SEToken.Email);


            //var SEToken = SETokenUtil.GetToken(this.Request);
            //return new OnsiteService().InsertBooking(Booking, "janie.chang@showeasy.com", "");

        }




    }
}