
///////////////////////////////////////////////////////////////////////////////
//文件名称: VmInsuerEditor.cs
//文件描述: 保险商添加修改
//创 建 者: xls
//创建日期: 2018/5/24 21:35:53
//版 本 号：1.0.0.0
////////////////////////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using Com.FirmLib.Bll;
using Com.FirmLib.Entity;
using FWindSoft.DataFramework;
using FWindSoft.MVVM;
using FWindSoft.Wpf;

namespace Com.FirmLib.UI.Insuer
{
    public class VmInsuerEditor : BaseViewModel
    {
        public VmInsuerEditor()
        {
            Init();
        }

        private void Init()
        {

        }
        #region 属性相关

        /// <summary>
        /// 是否管理
        /// </summary>
        public bool IsManage { get; set; }
        /// <summary>
        /// 新保险商Id
        /// </summary>
        public string Id { get; set; }
        private string m_Name;
        /// <summary>
        /// 保险商名称
        /// </summary>
        public string Name
        {
            get { return this.m_Name; }
            set
            {
                this.m_Name = value;
                RaisePropertyChanged(() => this.Name);
            }
        }

        private string m_Url;
        /// <summary>
        /// 保险商url
        /// </summary>
        public string Url
        {
            get { return this.m_Url; }
            set
            {
                this.m_Url = value;
                RaisePropertyChanged(() => this.Url);
            }
        }
        #endregion

        #region 命令相关
        /// <summary>
        /// 添加工厂完场
        /// </summary>
        /// <param name="parameter"></param>
        [Command]
        public void AddCommand(object parameter)
        {
            try
            {
                if (!CreateInsuer())
                    return;
                Window window = parameter as Window;
                if (window != null)
                    window.DialogResult = true;
            }
            catch (Exception e)
            {
               MessageTipEx.Show(this.GetWindow(), e);
            }
        }
        public bool CanAddCommand(object parameter)
        {
            return IsValidated;
        }
        /// <summary>
        /// 添加并管理供应商
        /// </summary>
        /// <param name="parameter"></param>
        [Command]
        public void AddAndManageCommand(object parameter)
        {
            try
            {
                if (!CreateInsuer())
                    return;
                IsManage = true;
                Window window = parameter as Window;
                if (window != null)
                    window.DialogResult = true;
            }
            catch (Exception e)
            {
               MessageTipEx.Show(this.GetWindow(), e);
            }
        }
        public bool CanAddAndManageCommand(object parameter)
        {
            return IsValidated;
        }

        #endregion
        /// <summary>
        /// 创建保险商
        /// </summary>
        /// <returns></returns>
        private bool CreateInsuer()
        {
            InsuerItem item = new InsuerItem();
            item.Name = this.Name ?? string.Empty;
            item.Website = Url ?? string.Empty;
            var result = BllFactory<InsuerBll>.Instance.Add(item);
            if (result)
            {
                Id = item.Id;
            }
            else
            {
                MessageTip.Show(this.GetWindow(),BllFactory<InsuerBll>.Instance.ErrorMessage ?? string.Empty);
            }
            return result;     
        }
    }
}
