/// <summary>
        /// Insert 1 bản ghi vào database, nhận dữ liệu từ customerRepository, validate dữ liệu, rồi đẩy dữ liệu về controller
        /// </summary>
        /// <param name="customer"></param>
        /// <returns></returns>
        public int Post(Customer customer)
        {
            //Validate dữ liệu

            //Kiểm tra xem customerCode có null hay không (phía client)
            CustomerException.CheckNullCustomerCode(customer.CustomerCode);
            //static là gọi luôn, không cần khởi tạo phương thức gọi đến nó
            //Kiểm tra xem fullName có null hay không (phía client)

            //Kiểm tra xem customerCode đã tồn tại chưa (phía server) (duplicate)
            var isExists = _customerRepository.CheckDuplicateCustomerCode(customer.CustomerCode);

            if (isExists == true)
            {
                throw new CustomerException("MÃ khách hàng đã tồn tại trên hệ thống!.");
            }

            //Kiểm tra email hợp lệ không (phía client, không cần kết nối database)
            CustomerException.CheckValidEmail(customer.Email);

            //Kiểm tra số điện thoại hợp lệ không
            CustomerException.CheckValidPhoneNumber(customer.PhoneNumber);


            var rowsAffect = _customerRepository.Post(customer);

            return(rowsAffect);
        }
        /// <summary>
        /// Update 1 bản ghi vào database dựa theo id
        /// </summary>
        /// <param name="id"></param>
        /// <param name="customer"></param>
        /// <returns></returns>
        public int Put(Guid id, Customer customer)
        {
            //Validate dữ liệu
            //Kiểm tra email hợp lệ
            CustomerException.CheckValidEmail(customer.Email);
            //Kiểm tra số điện thoại hợp lệ
            CustomerException.CheckValidPhoneNumber(customer.PhoneNumber);

            var rowsAffect = _customerRepository.Put(id, customer);

            return(rowsAffect);
        }
        protected override void Validate(Customer entity, bool isInsert)
        {
            //base.Validate(entity); //Nhận mã từ base
            if (entity is Customer) //Ép kiểu
            {
                var customer = entity as Customer;
                if (isInsert == false)
                {
                    CustomerException.CheckNullCustomerId(entity.CustomerId);
                }
                else
                {
                    //Kiểm tra xem customerCode đã tồn tại chưa (phía server) (duplicate)
                    var isCustomerCodeExists = _customerRepository.CheckDuplicateCustomerCode(customer.CustomerCode);
                    if (isCustomerCodeExists == true)
                    {
                        throw new CustomerException("Mã khách hàng đã tồn tại trên hệ thống!.");
                    }

                    //Kiểm tra email đã tồn tại chưa (phía server)
                    var isEmailExists = _customerRepository.CheckDuplicateEmail(customer.CustomerCode);
                    if (isEmailExists == true)
                    {
                        throw new CustomerException("Email đã tồn tại trên hệ thống!.");
                    }

                    //Kiểm tra số điện thoại đã tồn tại chưa (phía server)
                    var isPhoneNumberExists = _customerRepository.CheckDuplicatePhoneNumber(customer.CustomerCode);
                    if (isPhoneNumberExists == true)
                    {
                        throw new CustomerException("Số điện thoại đã tồn tại trên hệ thống!.");
                    }
                }

                //Kiểm tra xem customerCode có null hay không (phía client)
                CustomerException.CheckNullCustomerCode(customer.CustomerCode);
                //static là gọi luôn, không cần khởi tạo phương thức gọi đến nó
                //Kiểm tra xem id có null hay không (phía client)

                //Kiểm tra email hợp lệ không (phía client, không cần kết nối database)
                CustomerException.CheckValidEmail(customer.Email);

                //Kiểm tra số điện thoại hợp lệ không
                CustomerException.CheckValidPhoneNumber(customer.PhoneNumber);
            }
        }