using BBWY.Client.Models;
using BBWY.Controls;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;

namespace BBWY.Client.Views.Order
{
    /// <summary>
    /// SD.xaml 的交互逻辑
    /// </summary>
    public partial class SD : BWindow
    {
        public string OrderId { get; private set; }

        public bool IsSetStorageType { get; private set; }

        public decimal SDCommissionAmount { get; private set; }

        public decimal SDOrderAmount { get; private set; }

        public decimal DeliveryExpressFreight { get; private set; }

        public SDType? SDType { get; private set; }

        public string Flag { get; private set; }

        public string VenderRemark { get; private set; }

        public string SDKey { get; private set; }

        public PayBillType? PayChannel { get; set; }

        public string SdPayBillNo { get; set; }

        public string SdOperator { get; set; }

        public SD(string orderId,
                  bool isSetStorageType,
                  string venderRemark,
                  string flag,
                  string sdKey,
                  PayBillType? payChannel,
                  string sdPayBillNo,
                  string sdOperator,
                  decimal sdCommissionAmount,
                  decimal sdOrderAmount,
                  decimal deliveryExpressFreight,
                  SDType sDType = Models.SDType.自刷)
        {
            InitializeComponent();
            this.OrderId = orderId;
            this.IsSetStorageType = isSetStorageType;
            this.VenderRemark = venderRemark;
            this.Flag = flag;
            this.SDKey = sdKey;
            this.PayChannel = payChannel;
            this.SdPayBillNo = sdPayBillNo;
            this.SdOperator = sdOperator;
            this.SDCommissionAmount = sdCommissionAmount;
            this.SDOrderAmount = sdOrderAmount;
            this.DeliveryExpressFreight = deliveryExpressFreight;
            this.SDType = sDType;
        }
        private void BWindow_Loaded(object sender, RoutedEventArgs e)
        {
            txtVenderRemark.Text = VenderRemark;
            cbx_sdType.SelectedItem = SDType;
            var flagList = new List<KVModel>()
            {
                new KVModel() {Key="灰色",Value="Gray"},
                new KVModel() {Key="红色",Value="Red"},
                new KVModel() {Key="黄色",Value="Yellow"},
                new KVModel() {Key="绿色",Value="Green"},
                new KVModel() {Key="蓝色",Value="Blue"},
                new KVModel() {Key="紫色",Value="Purple"}
            };
            cbx_flag.ItemsSource = flagList;
            if (!string.IsNullOrEmpty(Flag))
                cbx_flag.SelectedItem = flagList.FirstOrDefault(kv => kv.Value == Flag) ?? flagList[0];

            this.txt_SDKey.Text = SDKey;
            if (PayChannel != null)
                this.cbx_SDPayChannel.SelectedItem = PayChannel;
            this.txt_SDPayBillNo.Text = SdPayBillNo;
            this.txt_SDOperator.Text = SdOperator;
            this.txtDeliveryExpressFreight.Text = DeliveryExpressFreight.ToString();
            this.txtSDCommissionAmount.Text = SDCommissionAmount.ToString();
            this.txtSDOrderAmount.Text = SDOrderAmount.ToString();

            lblSDCommissionAmount.Text = (SDType)cbx_sdType.SelectedItem == Models.SDType.自刷 ? "空单号费" : "佣金";
        }

        private void btn_Save_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(txtVenderRemark.Text))
            {
                MessageBox.Show("商家备注必填", "提示");
                return;
            }
            decimal.TryParse(txtSDCommissionAmount.Text, out decimal sdCommissionAmount);
            decimal.TryParse(txtDeliveryExpressFreight.Text, out decimal deliveryExpressFreight);
            decimal.TryParse(txtSDOrderAmount.Text, out decimal sdOrderAmount);
            SDCommissionAmount = sdCommissionAmount;
            SDOrderAmount = sdOrderAmount;
            DeliveryExpressFreight = deliveryExpressFreight;
            Flag = (cbx_flag.SelectedItem as KVModel).Value;
            SDType = (SDType)cbx_sdType.SelectedItem;
            VenderRemark = txtVenderRemark.Text;

            SDKey = this.txt_SDKey.Text;
            PayChannel = (PayBillType)this.cbx_SDPayChannel.SelectedItem;
            SdPayBillNo = this.txt_SDPayBillNo.Text;
            SdOperator = this.txt_SDOperator.Text;

            this.DialogResult = true;
            this.Close();
        }

        private void cbx_sdType_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (lblSDCommissionAmount == null)
                return;
            lblSDCommissionAmount.Text = (SDType)cbx_sdType.SelectedItem == Models.SDType.自刷 ? "空单号费" : "佣金";
        }
    }
}