Exemplo n.º 1
0
        private void LoadWithDriverCardNumber()
        {
            HPS.BLL.DriverSpecificationBLL.BLLDriverSpecification_TFactory DriverSpecificationFactory = new HPS.BLL.DriverSpecificationBLL.BLLDriverSpecification_TFactory();
            List <HPS.BLL.DriverSpecificationBLL.BLLDriverSpecification_T> DriverSpecificationList    = DriverSpecificationFactory.GetAllBy(HPS.BLL.DriverSpecificationBLL.BLLDriverSpecification_T.DriverSpecification_TField.NationalCode_int, _NationalCode);

            if (DriverSpecificationList != null && DriverSpecificationList.Count > 0)
            {
                _DriverSpecificationID = DriverSpecificationList[0].DriverSpecificationID_int;
                Key = new HPS.BLL.DriverSpecificationBLL.BLLDriverSpecification_TKeys();
                Key.DriverSpecificationID_int           = _DriverSpecificationID;
                DriverCardNumber_nvcTextBox.Text        = DriverSpecificationList[0].DriverCardNumber_nvc;
                FirstName_nvcTextBox.Text               = DriverSpecificationList[0].FirstName_nvc;
                LastName_nvcTextBox.Text                = DriverSpecificationList[0].LastName_nvc;
                NationalCode_intNumericTextBox.Text     = Convert.ToString(DriverSpecificationList[0].NationalCode_int);
                licenceNumber_nvcTextBox.Text           = DriverSpecificationList[0].licenceNumber_nvc;
                LicenceEnd_nvcTextBox.Text              = DriverSpecificationList[0].LicenceEnd_nvc;
                ClassID_intComboBox.SelectedValue       = DriverSpecificationList[0].ClassID_int.HasValue?DriverSpecificationList[0].ClassID_int:0;
                HealthCardEndDate_nvcTextBox.Text       = DriverSpecificationList[0].HealthCardEndDate_nvc;
                DriverCardSharjeEndDate_nvcTextBox.Text = DriverSpecificationList[0].DriverCardSharjeEndDate_nvc;
                SaveAndCloseButton.Visible              = false;
            }
            else
            {
                Editbutton.Visible = false;
                HPS.BLL.TrafficBLL.BLLTraffic_TFactory TrafficFactory = new HPS.BLL.TrafficBLL.BLLTraffic_TFactory();
                List <HPS.BLL.TrafficBLL.BLLTraffic_T> TrafficList    = TrafficFactory.GetAllBy(HPS.BLL.TrafficBLL.BLLTraffic_T.Traffic_TField.NationalCode_int, _NationalCode);
                if (TrafficList != null && TrafficList.Count > 0)
                {
                    DriverCardNumber_nvcTextBox.Text    = TrafficList[TrafficList.Count - 1].DriverCardNumber_nvc;
                    FirstName_nvcTextBox.Text           = TrafficList[TrafficList.Count - 1].FirstName_nvc;
                    LastName_nvcTextBox.Text            = TrafficList[TrafficList.Count - 1].LastName_nvc;
                    NationalCode_intNumericTextBox.Text = Convert.ToString(TrafficList[TrafficList.Count - 1].NationalCode_int);
                    licenceNumber_nvcTextBox.Text       = Convert.ToString(TrafficList[TrafficList.Count - 1].licenceNumber_int);
                }
                else
                {
                    HPS.BLL.DriverBLL.BLLDriver_TFactory DriverFactory = new HPS.BLL.DriverBLL.BLLDriver_TFactory();
                    List <HPS.BLL.DriverBLL.BLLDriver_T> DriverList    = DriverFactory.GetAllBy(HPS.BLL.DriverBLL.BLLDriver_T.Driver_TField.NationalCode_int, _NationalCode);
                    if (DriverList != null && DriverList.Count > 0)
                    {
                        DriverCardNumber_nvcTextBox.Text    = DriverList[0].DriverCardNumber_nvc;
                        FirstName_nvcTextBox.Text           = DriverList[0].FirstName_nvc;
                        LastName_nvcTextBox.Text            = DriverList[0].LastName_nvc;
                        NationalCode_intNumericTextBox.Text = Convert.ToString(DriverList[0].NationalCode_int);
                        licenceNumber_nvcTextBox.Text       = Convert.ToString(DriverList[0].licenceNumber_nvc);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void SaveButton_Click(object sender, EventArgs e)
        {
            HPS.BLL.LadBillCreditBLL.BLLLadBillCredit_TFactory LadBillCreditFactory = new HPS.BLL.LadBillCreditBLL.BLLLadBillCredit_TFactory();
            HPS.BLL.LadBillCreditCancelCommentBLL.BLLLadBillCreditCancelComment_TFactory LadBillCreditCancelCommentFactory = new HPS.BLL.LadBillCreditCancelCommentBLL.BLLLadBillCreditCancelComment_TFactory();

            try
            {
                if (LadBillCreditCancelCommentID_intCheckedListBox.CheckedItems.Count == 0)
                {
                    throw new ApplicationException("توضیحات ابطال مجوز انتخاب نشده است");
                }

                HPS.BLL.LadBillCreditBLL.BLLLadBillCredit_T LadBillCreditEntity = LadBillCreditFactory.GetBy(this._Key);
                HPS.BLL.TrafficBLL.BLLTraffic_TFactory      TrafficFactory      = new HPS.BLL.TrafficBLL.BLLTraffic_TFactory();
                if (LadBillCreditEntity == null)
                {
                    throw new HPS.Exceptions.LadBillCreditNotFound();
                }
                LadBillCreditEntity.Canceled_bit         = true;
                LadBillCreditEntity.CanceledComment_nvc  = this.LadBillCreditCancelComment_nvcTextBox.Text;
                LadBillCreditEntity.CanceledDate_nvc     = LadBillCreditFactory.ServerJalaliDate;
                LadBillCreditEntity.CanceledTime_nvc     = LadBillCreditFactory.ServerTime;
                LadBillCreditEntity.CanceledUserName_nvc = HPS.Common.CurrentUser.user.UserName_nvc;
                if (TurnLeftRadioButton.Checked == true)
                {
                    LadBillCreditEntity.Turn_bit = true;
                }
                else if (TurnCancelRadioButton.Checked == true)
                {
                    LadBillCreditEntity.Turn_bit = false;
                }
                if (LadBillCreditEntity.Turn_bit.HasValue == false)
                {
                    throw new ApplicationException("وضعیت نوبت را تعیین نمایید ");
                }
                if (LadeAssignmentLeftradioButton.Checked == false && LadeAssginmentCancelradioButton.Checked == false && OtherRemainedCancelRadioButton.Checked == false)
                {
                    throw new ApplicationException("وضعیت اطلاع رسانی را تعیین نمایید ");
                }
                string    strSelect = string.Format("TrafficID_bint='{0}'", _TrafficKey.TrafficID_bint);
                DataRow[] drSelect  = _dataTable.Select(strSelect);
                DataTable TrafficStatusDataTable = new DataTable();
                if (drSelect != null && drSelect.Length > 0)
                {
                    LadBillCreditFactory.GetLastStatusForCancelLadBillCredit((string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["NumberPlate_nvc"], TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["SerialPlate_nvc"], TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["CarCardNumber_nvc"], TypeCode.String), TrafficStatusDataTable);
                }
                if (TrafficStatusDataTable != null && TrafficStatusDataTable.Rows.Count > 0)
                {
                    bool? HasTurn_bit             = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["HasTurn_bit"], TypeCode.Boolean);
                    bool? TurnReturn_bit          = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["TurnReturn_bit"], TypeCode.Boolean);
                    bool? TurnCanceled_bit        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["TurnCanceled_bit"], TypeCode.Boolean);
                    bool? HasLadBillCredit_bit    = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["HasLadBillCredit_bit"], TypeCode.Boolean);
                    bool? LadBillCreditCancel_bit = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["LadBillCreditCancel_bit"], TypeCode.Boolean);
                    bool? LadBillCreditTurn_bit   = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["LadBillCreditTurn_bit"], TypeCode.Boolean);
                    bool? TurnAccepted_bit        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["TurnAccepted_bit"], TypeCode.Boolean);
                    Int64?AcceptedTurnNumber_bint = (Int64?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["AcceptedTurnNumber_bint"], TypeCode.Int64);
                    //  DateTime TrafficDate = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(TrafficEntity.Date_nvc)).MyDate.ToString("yyyy/MM/dd") + " " + TrafficEntity.Time_nvc);

                    #region  Conditions
                    if ((Int32)drSelect[0]["ServiceID_int"] == 2)
                    {
                        if (TrafficStatusDataTable != null && TrafficStatusDataTable.Rows.Count > 0)
                        {
                            if (HasTurn_bit.HasValue == false || HasTurn_bit == true)
                            {
                                if (TurnAccepted_bit.HasValue && TurnAccepted_bit == true)
                                {
                                    if (TurnCanceled_bit.HasValue && TurnCanceled_bit == true)
                                    {
                                        throw new ApplicationException("این نوبت باطل شده است");
                                    }
                                    else
                                    {
                                        if (HasLadBillCredit_bit.HasValue && HasLadBillCredit_bit == true)
                                        {
                                            if (LadBillCreditCancel_bit.HasValue && LadBillCreditCancel_bit == false)
                                            {
                                                if (LadBillCreditTurn_bit.HasValue && LadBillCreditTurn_bit == true)
                                                {
                                                    //محاسبه مدت مجاز سفر
                                                    DateTime  NowDate          = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(TrafficFactory.ServerJalaliDate)).MyDate.ToString("yyyy/MM/dd") + " " + TrafficFactory.ServerTime);
                                                    DataTable TrafficDataTable = new DataTable();
                                                    if (TrafficDataTable != null && TrafficDataTable.Rows.Count > 0)
                                                    {
                                                        Int32 _CityTravelHour = 0;
                                                        if (!string.IsNullOrEmpty(TrafficDataTable.Rows[0]["TravelTime_int"].ToString()))
                                                        {
                                                            _CityTravelHour = Convert.ToInt32(TrafficDataTable.Rows[0]["TravelTime_int"].ToString());
                                                        }
                                                        ///////////////
                                                        string   _OutDate = TrafficDataTable.Rows[0]["Date_nvc"].ToString();
                                                        string   _OutTime = TrafficDataTable.Rows[0]["Time_nvc"].ToString();
                                                        DateTime OutDate  = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(_OutDate)).MyDate.ToString("yyyy/MM/dd") + " " + _OutTime);

                                                        if (TrafficDataTable.Rows[0]["Out_bit"].ToString() == "False")
                                                        {
                                                            TimeSpan date = NowDate - OutDate;
                                                            if (date.TotalHours < _CityTravelHour)
                                                            {
                                                                throw new ApplicationException("مدت مجاز سفر برای این کامیون تمام نشده است و امکان ادامه عملیات ممکن نیست");
                                                            }
                                                        }
                                                    }
                                                }
                                                else
                                                {
                                                    if (TurnLeftRadioButton.Checked)
                                                    {
                                                        DataTable TurnStatusDataTable = new DataTable();
                                                        //*************اگر خودرو خارج شده باشد اجازه حفظ نوبت را نداشته باشد93/06/10
                                                        List <HPS.BLL.TrafficBLL.BLLTraffic_T> TrafficList = TrafficFactory.GetAllBy(HPS.BLL.TrafficBLL.BLLTraffic_T.Traffic_TField.TrafficNumber_bint, drSelect[0]["TrafficNumber_bint"]);
                                                        if (TrafficList.Count > 0 && TrafficList != null)
                                                        {
                                                            foreach (HPS.BLL.TrafficBLL.BLLTraffic_T item in TrafficList)
                                                            {
                                                                if (item.Out_bit == true)
                                                                {
                                                                    //LadBillCreditEntity.Turn_bit = false;
                                                                    Hepsa.Core.Common.MessageBox.InformationMessage("این خودرو خارج شده است، امکان حفظ نوبت وجود ندارد");
                                                                    return;
                                                                }
                                                            }
                                                        }


                                                        //BLL.SettingsBLL.BLLSetting_TKeys SettingKey = new BLL.SettingsBLL.BLLSetting_TKeys();
                                                        //BLL.SettingsBLL.BLLSetting_T SettingEntity = new BLL.SettingsBLL.BLLSetting_T();
                                                        //BLL.SettingsBLL.BLLSetting_TFactory SettingsFactory = new BLL.SettingsBLL.BLLSetting_TFactory();
                                                        //SettingKey.SettingID_int = 1009;
                                                        //SettingEntity = SettingsFactory.GetBy(SettingKey);
                                                        //TrafficFactory.SelectActiveTurnsForInTraffic(drSelect[0]["NumberPlate_nvc"].ToString(), drSelect[0]["SerialPlate_nvc"].ToString(), SettingEntity.Value_nvc, "00:00:00", TrafficFactory.ServerJalaliDate, "23:59:59", TurnStatusDataTable);

                                                        TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["NumberPlate_nvc"], TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["SerialPlate_nvc"], TypeCode.String), TurnStatusDataTable);
                                                        if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                                        {
                                                            if ((bool?)(Hepsa.Core.Common.PersentationController.GetEntityValue(TurnStatusDataTable.Rows[0]["Canceled_bit"], TypeCode.Boolean)) != false)
                                                            {
                                                                throw new ApplicationException(string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[0]["AcceptedTurnNumber_bint"]));
                                                            }
                                                        }
                                                        DataTable LadBillCreditTrafficStatusDataTable = new DataTable();
                                                        LadBillCreditFactory.GetLadBillCreditTrafficStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["NumberPlate_nvc"], TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["SerialPlate_nvc"], TypeCode.String), LadBillCreditTrafficStatusDataTable);
                                                        if (LadBillCreditTrafficStatusDataTable != null && LadBillCreditTrafficStatusDataTable.Rows.Count > 0)
                                                        {
                                                            int? LadBillCredit     = (int?)Hepsa.Core.Common.PersentationController.GetEntityValue(LadBillCreditTrafficStatusDataTable.Rows[0]["LadBillCreditID_int"], TypeCode.Int32);
                                                            int? TurnCancelComment = (int?)Hepsa.Core.Common.PersentationController.GetEntityValue(LadBillCreditTrafficStatusDataTable.Rows[0]["TurnCancelCommantID_int"], TypeCode.Int32);
                                                            bool?Turnaccepted      = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(LadBillCreditTrafficStatusDataTable.Rows[0]["Turnaccepted_bit"], TypeCode.Boolean);


                                                            string    strHas2LadBill  = string.Format("TrafficID_bint='{0}'", drSelect[0]["TrafficID_bint"]);
                                                            string    strSecondStatus = string.Format("TrafficID_bint>'{0}'", drSelect[0]["TrafficID_bint"]);
                                                            DataRow[] drHas2LadBill   = LadBillCreditTrafficStatusDataTable.Select(strHas2LadBill);
                                                            DataRow[] drSecondStatus  = LadBillCreditTrafficStatusDataTable.Select(strSecondStatus);
                                                            if (drHas2LadBill != null && drHas2LadBill.Length > 0)
                                                            {
                                                                if (drSecondStatus != null && drSecondStatus.Length > 0)
                                                                {
                                                                    int? LadBillCreditSecond     = (int?)Hepsa.Core.Common.PersentationController.GetEntityValue(drSecondStatus[0]["LadBillCreditID_int"], TypeCode.Int32);
                                                                    int? TurnCancelCommentSecond = (int?)Hepsa.Core.Common.PersentationController.GetEntityValue(drSecondStatus[0]["TurnCancelCommantID_int"], TypeCode.Int32);
                                                                    bool?TurnacceptedSecond      = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(drSecondStatus[0]["Turnaccepted_bit"], TypeCode.Boolean);
                                                                    if (TurnacceptedSecond.HasValue && TurnacceptedSecond == true)
                                                                    {
                                                                        if (LadBillCreditSecond.HasValue)
                                                                        {
                                                                            throw new ApplicationException(string.Format("این ناوگان به شماره نوبت< {0} >و شماره قبض< {1} >مجوز گرفته است", drSecondStatus[0]["AcceptedTurnNumber_bint"], drSecondStatus[0]["TrafficNumber_bint"]));
                                                                        }
                                                                        else
                                                                        {
                                                                            if (TurnCancelCommentSecond.HasValue == false)
                                                                            {
                                                                                throw new ApplicationException(string.Format("این ناوگان داراي شماره نوبت تأييد شده< {0} >مي باشد", drSecondStatus[0]["AcceptedTurnNumber_bint"], drSecondStatus[0]["TrafficNumber_bint"]));
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                            else
                                                            {
                                                                DataTable TurnTtatusDataTable = new DataTable();
                                                                TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["NumberPlate_nvc"], TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["SerialPlate_nvc"], TypeCode.String), TurnTtatusDataTable);
                                                                if (TurnTtatusDataTable != null && TurnTtatusDataTable.Rows.Count > 0)
                                                                {
                                                                    if ((bool?)(Hepsa.Core.Common.PersentationController.GetEntityValue(TurnStatusDataTable.Rows[0]["Canceled_bit"], TypeCode.Boolean)) != false)
                                                                    {
                                                                        throw new ApplicationException(string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[0]["AcceptedTurnNumber_bint"]));
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                    else
                                                    {
                                                        if (TurnCancelRadioButton.Checked == true)
                                                        {
                                                            LadBillCreditEntity.Turn_bit = false;
                                                            //*************اگر خودرو خارج نشده باشد اجازه ابطال را نداشته باشد94/10/01
                                                            List <HPS.BLL.TrafficBLL.BLLTraffic_T> TrafficOutList = TrafficFactory.GetAllByCondition(string.Format("[Traffic_T].Out_bit=1 and [Traffic_T].TrafficNumber_bint={0}", drSelect[0]["TrafficNumber_bint"].ToString()));
                                                            if (TrafficOutList.Count == 0)
                                                            {
                                                                Hepsa.Core.Common.MessageBox.InformationMessage("این خودرو خارج نشده است، امکان ابطال وجود ندارد");
                                                                return;
                                                            }
                                                        }
                                                        //ابطال نوبت
                                                        HPS.BLL.TurnManagementBLL.BLLTurnManagement_TFactory TurnManagementFactory = new HPS.BLL.TurnManagementBLL.BLLTurnManagement_TFactory();
                                                        HPS.BLL.TurnManagementBLL.BLLTurnManagement_T        TurnManagementEntity  = new HPS.BLL.TurnManagementBLL.BLLTurnManagement_T();
                                                        TurnManagementEntity.TurnCancelCommantID_int = 11;
                                                        TurnManagementEntity.TurnCancelCommment_nvc  = "ابطال نوبت هنگام ابطال مجوز";
                                                        TurnManagementEntity.Return_bit     = false;
                                                        TurnManagementEntity.Date_nvc       = TurnManagementFactory.ServerJalaliDate;
                                                        TurnManagementEntity.Time_nvc       = TurnManagementFactory.ServerTime;
                                                        TurnManagementEntity.UserName_nvc   = HPS.Common.CurrentUser.user.UserName_nvc;
                                                        TurnManagementEntity.TrafficID_bint = (Int64?)drSelect[0]["TrafficID_bint"];
                                                        TurnManagementFactory.Insert(TurnManagementEntity);
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                DataTable TurnStatusDataTable = new DataTable();
                                                TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["NumberPlate_nvc"], TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["SerialPlate_nvc"], TypeCode.String), TurnStatusDataTable);
                                                if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                                {
                                                    throw new ApplicationException(string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                                }
                                            }
                                        }
                                        else
                                        {
                                            if (TurnLeftRadioButton.Checked)
                                            {
                                                throw new ApplicationException(string.Format("این ناوگان دارای شماره نوبت تأیید شده {0} می باشد ومجوز نگرفته است", AcceptedTurnNumber_bint));
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    DataTable TrafficStatusForAcceptTurnDataTable = new DataTable();
                                    TrafficFactory.GetLastStatusForAcceptTurn((Int64)Hepsa.Core.Common.PersentationController.GetEntityValue(drSelect[0]["TrafficID_bint"], TypeCode.Int64), TrafficStatusForAcceptTurnDataTable);
                                    if (TrafficStatusForAcceptTurnDataTable != null && TrafficStatusForAcceptTurnDataTable.Rows.Count > 0)
                                    {
                                        throw new ApplicationException(string.Format("این ناوگان دارای شماره نوبت تأیید شده {0} می باشد ومجوز نگرفته است", TrafficStatusForAcceptTurnDataTable.Rows[0]["AcceptedTurnNumber_bint"]));
                                    }
                                }
                            }
                        }
                        else
                        {
                            throw new ApplicationException("نوبت معتبر ندارد");
                        }
                    }
                    #endregion
                }



                LadBillCreditFactory.BeginProc();

                if (LadeAssginmentCancelradioButton.Checked)
                {
                    //ابطال اطلاع رسانی بار

                    LadBillCreditFactory.Update(LadBillCreditEntity, this._Key);
                    HPS.BLL.LadeCancelAssignmentBLL.BLLLadeCancelAssignment_TFactory LadeCancelAssignmentFactory = new HPS.BLL.LadeCancelAssignmentBLL.BLLLadeCancelAssignment_TFactory();
                    HPS.BLL.LadeCancelAssignmentBLL.BLLLadeCancelAssignment_T        LadeCancelAssignmentEntity  = new HPS.BLL.LadeCancelAssignmentBLL.BLLLadeCancelAssignment_T();
                    LadeCancelAssignmentEntity.LadeAssignmentID_bint   = _LaKey.LadeAssignmentID_bint.Value;
                    LadeCancelAssignmentEntity.LadeCancelCommentID_int = 6;
                    LadeCancelAssignmentEntity.LadeCancelComment_nvc   = "ابطال اطلاع رسانی بار هنگام ابطال مجوز";
                    LadeCancelAssignmentEntity.Count_int    = 1;
                    LadeCancelAssignmentEntity.Date_nvc     = LadeCancelAssignmentFactory.ServerJalaliDate;
                    LadeCancelAssignmentEntity.Time_nvc     = LadeCancelAssignmentFactory.ServerTime;
                    LadeCancelAssignmentEntity.UserName_nvc = HPS.Common.CurrentUser.user.UserName_nvc;
                    LadeCancelAssignmentFactory.Insert(LadeCancelAssignmentEntity);
                }

                else if (OtherRemainedCancelRadioButton.Checked)
                {
                    //ابطال اطلاع رسانی بار و باقی  مانده ها
                    HPS.BLL.LadeCancelAssignmentBLL.BLLLadeCancelAssignment_TFactory LadeCancelAssignmentFactory = new HPS.BLL.LadeCancelAssignmentBLL.BLLLadeCancelAssignment_TFactory();
                    HPS.BLL.LadeCancelAssignmentBLL.BLLLadeCancelAssignment_T        LadeCancelAssignmentEntity  = new HPS.BLL.LadeCancelAssignmentBLL.BLLLadeCancelAssignment_T();
                    BLL.LadeAssignmentBLL.BLLLadeAssignment_TFactory LadeAssignmentFactory = new HPS.BLL.LadeAssignmentBLL.BLLLadeAssignment_TFactory();
                    DataTable remainedLadeAssignmentTable = new DataTable();
                    string    condition = string.Format("LadeAssignmentID_bint={0}", _LaKey.LadeAssignmentID_bint.Value);
                    LadeAssignmentFactory.SelectRemainedDetailSelectByCondition(condition, remainedLadeAssignmentTable);
                    int remaindCount_int = 0;
                    if (remainedLadeAssignmentTable != null && remainedLadeAssignmentTable.Rows.Count > 0)
                    {
                        remaindCount_int = (Int32)remainedLadeAssignmentTable.Rows[remainedLadeAssignmentTable.Rows.Count - 1]["RemainderCount_int"];
                    }
                    LadBillCreditFactory.Update(LadBillCreditEntity, this._Key);
                    LadeCancelAssignmentEntity.LadeAssignmentID_bint   = _LaKey.LadeAssignmentID_bint.Value;
                    LadeCancelAssignmentEntity.LadeCancelCommentID_int = 6;
                    LadeCancelAssignmentEntity.LadeCancelComment_nvc   = "ابطال اطلاع رسانی بار هنگام ابطال مجوز";
                    LadeCancelAssignmentEntity.Count_int    = remaindCount_int + 1;
                    LadeCancelAssignmentEntity.Date_nvc     = LadeCancelAssignmentFactory.ServerJalaliDate;
                    LadeCancelAssignmentEntity.Time_nvc     = LadeCancelAssignmentFactory.ServerTime;
                    LadeCancelAssignmentEntity.UserName_nvc = HPS.Common.CurrentUser.user.UserName_nvc;
                    LadeCancelAssignmentFactory.Insert(LadeCancelAssignmentEntity);
                }
                else
                {
                    LadBillCreditFactory.Update(LadBillCreditEntity, this._Key);
                }

                //ابطال مجوز

                for (int index = 0; index < this.LadBillCreditCancelCommentID_intCheckedListBox.CheckedItems.Count; index++)
                {
                    HPS.BLL.LadBillCreditCancelCommentBLL.BLLLadBillCreditCancelComment_T LadBillCreditCancelCommentEntity = new HPS.BLL.LadBillCreditCancelCommentBLL.BLLLadBillCreditCancelComment_T();
                    LadBillCreditCancelCommentEntity.LadBillCreditID_int        = this._Key.LadBillCreditID_int;
                    LadBillCreditCancelCommentEntity.LadBillCancelCommentID_int = ((HPS.BLL.LadBillCancelCommentBLL.BLLLadBillCancelComment_T) this.LadBillCreditCancelCommentID_intCheckedListBox.CheckedItems[index]).LadBillCancelCommentID_int;
                    LadBillCreditCancelCommentEntity.LadbillCancelComment_nvc   = ((HPS.BLL.LadBillCancelCommentBLL.BLLLadBillCancelComment_T) this.LadBillCreditCancelCommentID_intCheckedListBox.CheckedItems[index]).LadbillCancelComment_nvc;
                    LadBillCreditCancelCommentFactory.Insert(LadBillCreditCancelCommentEntity);
                }

                LadBillCreditFactory.CommitProc();

                if (this._dataTable != null)
                {
                    DataRow[] dr = this._dataTable.Select(string.Format("LadBillCreditID_int = {0}", this._Key.LadBillCreditID_int));
                    if (dr != null && dr.Length > 0)
                    {
                        dr[0]["Canceled_bit"] = true;
                    }
                    this._dataTable.AcceptChanges();
                }
                this.Close();
            }
            catch (Exception ex)
            {
                LadBillCreditFactory.RollBackProc();
                Hepsa.Core.Common.MessageBox.ErrorMessage(ex.Message);
            }
        }
Exemplo n.º 3
0
        public override bool Validate(params object[] value)
        {
            try
            {
                this.Description = string.Empty;
                if (value.Length != Field.Length)
                {
                    this.Description = Hepsa.Core.My.Resources.ValidationMessage.IncorrectDataType;
                    return(false);
                }

                Int32? ServiceID_int      = (Int32?)value[0];
                string NumberPlate_nvc    = Convert.ToString(value[1]);
                string SerialPlate_nvc    = Convert.ToString(value[2]);
                Int64? TrafficID_bint     = (Int64?)value[3];
                Int64? TrafficNumber_bint = (Int64?)value[5];
                string CarCardNumber_nvc  = string.Empty;
                HPS.BLL.TrafficBLL.BLLTraffic_TFactory TrafficFactory = new HPS.BLL.TrafficBLL.BLLTraffic_TFactory();
                HPS.BLL.TrafficBLL.BLLTraffic_T        TrafficEntity  = new HPS.BLL.TrafficBLL.BLLTraffic_T();
                if (string.IsNullOrEmpty(NumberPlate_nvc) && string.IsNullOrEmpty(SerialPlate_nvc))
                {
                    HPS.BLL.TrafficBLL.BLLTraffic_TKeys TrafficKey = new HPS.BLL.TrafficBLL.BLLTraffic_TKeys();
                    TrafficKey.TrafficID_bint = TrafficID_bint.Value;

                    TrafficEntity = TrafficFactory.GetBy(TrafficKey);
                    if (TrafficEntity != null)
                    {
                        ServiceID_int   = TrafficEntity.ServiceID_int;
                        NumberPlate_nvc = TrafficEntity.NumberPlate_nvc;
                        SerialPlate_nvc = TrafficEntity.SerialPlate_nvc;
                    }
                }

                /////////////////////////////////////
                #region AcceptTurn Conditions

                DataTable TrafficStatusDataTable = new DataTable();
                TrafficFactory.GetLastStatus(NumberPlate_nvc, SerialPlate_nvc, CarCardNumber_nvc, TrafficStatusDataTable);



                if (ServiceID_int.HasValue && ServiceID_int.Value == 2)
                {
                    if (TrafficStatusDataTable != null && TrafficStatusDataTable.Rows.Count > 0)
                    {
                        Int64 LastTrafficID_bint = 0;
                        if (Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["TrafficID_bint"], TypeCode.Int64) != null)
                        {
                            LastTrafficID_bint = (Int64)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["TrafficID_bint"], TypeCode.Int64);
                        }
                        bool? HasTurn_bit             = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["HasTurn_bit"], TypeCode.Boolean);
                        bool? TurnReturn_bit          = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["TurnReturn_bit"], TypeCode.Boolean);
                        bool? TurnCanceled_bit        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["TurnCanceled_bit"], TypeCode.Boolean);
                        bool? HasLadBillCredit_bit    = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["HasLadBillCredit_bit"], TypeCode.Boolean);
                        bool? LadBillCreditCancel_bit = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["LadBillCreditCancel_bit"], TypeCode.Boolean);
                        bool? LadBillCreditTurn_bit   = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["LadBillCreditTurn_bit"], TypeCode.Boolean);
                        bool? TurnAccepted_bit        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["TurnAccepted_bit"], TypeCode.Boolean);
                        Int64?AcceptedTurnNumber_bint = (Int64?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusDataTable.Rows[0]["AcceptedTurnNumber_bint"], TypeCode.Int64);
                        if (HasTurn_bit.HasValue == false || HasTurn_bit == false)
                        {
                            /////////TurnAcception(TrafficEntityUpdate, TrafficDate, _TurnHour, TrafficKey);
                        }
                        else
                        {
                            if (TurnAccepted_bit.HasValue && TurnAccepted_bit == true)
                            {
                                if (TurnCanceled_bit.HasValue && TurnCanceled_bit == true)
                                {
                                    DataTable TurnStatusDataTable = new DataTable();
                                    TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatusDataTable);
                                    if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                    {
                                        Description = (string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                        return(false);
                                    }
                                }

                                else
                                {
                                    if (HasLadBillCredit_bit.HasValue && HasLadBillCredit_bit == true)
                                    {
                                        if (LadBillCreditCancel_bit.HasValue && LadBillCreditCancel_bit == true)
                                        {
                                            if (LadBillCreditTurn_bit.HasValue && LadBillCreditTurn_bit == true)
                                            {
                                                //محاسبه مدت مجاز سفر
                                                DateTime  NowDate          = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(TrafficFactory.ServerJalaliDate)).MyDate.ToString("yyyy/MM/dd") + " " + TrafficFactory.ServerTime);
                                                DataTable TrafficDataTable = new DataTable();
                                                string    Condition        = string.Format("Traffic_T.TrafficID_bint='{0}'", TrafficID_bint);
                                                TrafficFactory.GetAllByConditionWithLadBill(Condition, ref TrafficDataTable);
                                                if (TrafficDataTable != null && TrafficDataTable.Rows.Count > 0)
                                                {
                                                    // حذف چک کردن این مورد در زمانی که مجوز گرفته و ابطال با حفظ نوبت شده شده است در تاریخ 93/11/25 انجام شد که بتوان اطلاعات تردد را ویرایش نمود

                                                    //Int32 _CityTravelHour = 0;
                                                    //if (!string.IsNullOrEmpty(TrafficDataTable.Rows[0]["TravelTime_int"].ToString()))
                                                    //{
                                                    //    _CityTravelHour = Convert.ToInt32(TrafficDataTable.Rows[0]["TravelTime_int"].ToString());
                                                    //}
                                                    /////////////////
                                                    //string _OutDate = TrafficDataTable.Rows[0]["Date_nvc"].ToString();
                                                    //string _OutTime = TrafficDataTable.Rows[0]["Time_nvc"].ToString();
                                                    //DateTime OutDate = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(_OutDate)).MyDate.ToString("yyyy/MM/dd") + " " + _OutTime);

                                                    //if (TrafficDataTable.Rows[0]["Out_bit"].ToString() == "False")
                                                    //{
                                                    //    TimeSpan date = NowDate - OutDate;
                                                    //    double remaindedHour = _CityTravelHour - date.TotalHours;
                                                    //    if (OutDate.AddHours(_CityTravelHour).CompareTo(NowDate) > 0)//date.TotalHours > _CityTravelHour)
                                                    //    {
                                                    //        Description = (string.Format("مدت سفراین ناوگان به مجوز< {0} >تمام نشده و مدت < {1} > مانده است ", TrafficDataTable.Rows[0]["LadBillCreditID_int"], TimeSpan.FromDays(remaindedHour)));
                                                    //        return false;
                                                    //    }
                                                    //}
                                                }
                                                else
                                                {
                                                    DataTable TurnStatusDataTable = new DataTable();
                                                    TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatusDataTable);
                                                    if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                                    {
                                                        Description = (string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                                        return(false);
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            //محاسبه مدت مجاز سفر
                                            DateTime  NowDate          = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(TrafficFactory.ServerJalaliDate)).MyDate.ToString("yyyy/MM/dd") + " " + TrafficFactory.ServerTime);
                                            DataTable TrafficDataTable = new DataTable();
                                            string    Condition        = string.Format("Traffic_T.TrafficID_bint='{0}'", LastTrafficID_bint);
                                            TrafficFactory.GetAllByConditionWithLadBill(Condition, ref TrafficDataTable);
                                            if (TrafficDataTable != null && TrafficDataTable.Rows.Count > 0)
                                            {
                                                Int32 _CityTravelHour = 0;
                                                if (!string.IsNullOrEmpty(TrafficDataTable.Rows[0]["TravelTime_int"].ToString()))
                                                {
                                                    _CityTravelHour = Convert.ToInt32(TrafficDataTable.Rows[0]["TravelTime_int"].ToString());
                                                }
                                                ///////////////
                                                string   _OutDate = TrafficDataTable.Rows[0]["Date_nvc"].ToString();
                                                string   _OutTime = TrafficDataTable.Rows[0]["Time_nvc"].ToString();
                                                DateTime OutDate  = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(_OutDate)).MyDate.ToString("yyyy/MM/dd") + " " + _OutTime);

                                                if (TrafficDataTable.Rows[0]["Out_bit"].ToString() == "False")
                                                {
                                                    TimeSpan date          = NowDate - OutDate;
                                                    double   remaindedHour = _CityTravelHour - date.TotalHours;
                                                    if (OutDate.AddHours(_CityTravelHour).CompareTo(NowDate) > 0)//date.TotalHours > _CityTravelHour)
                                                    {
                                                        Description = (string.Format("مدت سفراین ناوگان به مجوز< {0} >تمام نشده و مدت < {1} > مانده است ", TrafficDataTable.Rows[0]["LadBillCreditID_int"], TimeSpan.FromDays(remaindedHour)));
                                                        return(false);
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                DataTable TurnStatusDataTable = new DataTable();
                                                TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatusDataTable);
                                                if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                                {
                                                    Description = (string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                                    return(false);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        DataTable TurnStatusDataTable = new DataTable();
                                        TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatusDataTable);

                                        if (TrafficID_bint != LastTrafficID_bint)
                                        {
                                            Description = (string.Format("این ناوگان دارای شماره نوبت تأیید شده {0} می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                            return(false);
                                        }
                                    }
                                }
                            }
                            else if (TurnAccepted_bit.HasValue && TurnReturn_bit == true)
                            {
                                DataTable TurnStatusDataTable = new DataTable();
                                TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatusDataTable);
                                if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                {
                                    Description = (string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                    return(false);
                                }
                            }
                            else
                            {
                                //محاسبه مدت مجاز سفر
                                DataTable LadBillDataTable = new DataTable();
                                TrafficFactory.GetTurnStatus(NumberPlate_nvc, SerialPlate_nvc, LadBillDataTable);
                                if (LadBillDataTable != null && LadBillDataTable.Rows.Count > 0)
                                {
                                    bool? PreviousTurnAccepted_bit        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(LadBillDataTable.Rows[LadBillDataTable.Rows.Count - 1]["TurnAccepted_bit"], TypeCode.Boolean);
                                    Int32?PreviousTurnCancelCommandID_bit = (Int32?)Hepsa.Core.Common.PersentationController.GetEntityValue(LadBillDataTable.Rows[LadBillDataTable.Rows.Count - 1]["TurnCancelCommantID_int"], TypeCode.Int32);
                                    bool? PreviousTurnReturn_bit          = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(LadBillDataTable.Rows[LadBillDataTable.Rows.Count - 1]["Return_bit"], TypeCode.Boolean);
                                    if (PreviousTurnAccepted_bit.HasValue && PreviousTurnAccepted_bit == true)
                                    {
                                        if (PreviousTurnCancelCommandID_bit.HasValue)
                                        {
                                            if (PreviousTurnReturn_bit.HasValue && PreviousTurnReturn_bit == true)
                                            {
                                                //باطل شده و احیا شده
                                                Description = (string.Format("ناوگان دارای شماره نوبت تأییدی< {0} >می باشد", LadBillDataTable.Rows[LadBillDataTable.Rows.Count - 1]["AcceptedTurnnumber_bint"]));
                                                return(false);
                                            }
                                        }
                                        else
                                        {
                                            //تأیید شده و باطل نشده

                                            DateTime  NowDate          = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(TrafficFactory.ServerJalaliDate)).MyDate.ToString("yyyy/MM/dd") + " " + TrafficFactory.ServerTime);
                                            DataTable TrafficDataTable = new DataTable();
                                            string    Condition        = string.Format("Traffic_T.NumberPlate_nvc='{0}' and SerialPlate_nvc='{1}'", NumberPlate_nvc, SerialPlate_nvc);
                                            TrafficFactory.GetAllByConditionWithLadBill(Condition, ref TrafficDataTable);

                                            if (TrafficDataTable != null && TrafficDataTable.Rows.Count > 0)
                                            {
                                                string    filter = "LadeAssignmentId_bint=Max(LadeAssignmentId_bint)";
                                                DataRow[] dr     = TrafficDataTable.Select(filter);
                                                if (dr != null && dr.Length > 0)
                                                {
                                                    Int32 _CityTravelHour = 0;
                                                    if (!string.IsNullOrEmpty(dr[dr.Length - 1]["TravelTime_int"].ToString()))
                                                    {
                                                        _CityTravelHour = Convert.ToInt32(dr[dr.Length - 1]["TravelTime_int"].ToString());
                                                    }

                                                    string    _OutDate = dr[dr.Length - 1]["LadBillDate"].ToString();
                                                    string    _OutTime = dr[dr.Length - 1]["LadBillTime"].ToString();
                                                    DateTime  OutDate  = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(_OutDate)).MyDate.ToString("yyyy/MM/dd") + " " + _OutTime);
                                                    DataTable TrafficStatusForAcceptTurnDataTable = new DataTable();
                                                    TrafficFactory.GetLastStatusForAcceptTurn((Int64)Hepsa.Core.Common.PersentationController.GetEntityValue(dr[dr.Length - 1]["TrafficID_bint"], TypeCode.Int64), TrafficStatusForAcceptTurnDataTable);
                                                    if (TrafficStatusForAcceptTurnDataTable != null && TrafficStatusForAcceptTurnDataTable.Rows.Count > 0 && Convert.ToBoolean(TrafficStatusForAcceptTurnDataTable.Rows[0]["HasTurn_bit"]) == true)
                                                    {
                                                        bool?LadBillCreditCancel = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["LadBillCreditCancel_bit"], TypeCode.Boolean);
                                                        bool?LadBillCreditTurn   = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["LadBillCreditTurn_bit"], TypeCode.Boolean);
                                                        bool?TurnReturn          = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["TurnReturn_bit"], TypeCode.Boolean);
                                                        bool?TurnCanceled        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["TurnCanceled_bit"], TypeCode.Boolean);
                                                        bool?TurnAccepted        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["TurnAccepted_bit"], TypeCode.Boolean);

                                                        if (LadBillCreditCancel.HasValue && LadBillCreditCancel == true)
                                                        {
                                                            if (LadBillCreditTurn.HasValue && LadBillCreditTurn == true)
                                                            {
                                                                Description = (string.Format("این ناوگان دارای شماره نوبت تأیید شده< {0} >می باشد", TrafficStatusForAcceptTurnDataTable.Rows[0]["AcceptedTurnNumber_bint"]));
                                                                return(false);
                                                            }
                                                        }
                                                        else
                                                        {
                                                            if (TurnCanceled.HasValue && TurnCanceled == true)
                                                            {
                                                                if (TurnReturn.HasValue && TurnReturn == true)
                                                                {
                                                                    //احیای نوبت در ابطال مجوز پس مدت سفر داره
                                                                    if (dr[dr.Length - 1]["Out_bit"].ToString() == "False")
                                                                    {
                                                                        TimeSpan date          = NowDate - OutDate;
                                                                        double   remaindedHour = _CityTravelHour - date.TotalHours;
                                                                        string   RemaindeHour  = TimeSpan.FromDays(remaindedHour).ToString().Substring(0, TimeSpan.FromDays(remaindedHour).ToString().Length - 3);
                                                                        if (OutDate.AddHours(_CityTravelHour).CompareTo(NowDate) > 0)//date.TotalHours > _CityTravelHour)
                                                                        {
                                                                            Description = (string.Format("مدت سفراین ناوگان به مجوز< {0} >تمام نشده و مدت < {1} > مانده است ", dr[dr.Length - 1]["LadBillCreditID_int"], RemaindeHour));
                                                                            return(false);
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                            else
                                                            {
                                                                // لحاظ نمودن مدت سفر
                                                                if (dr[dr.Length - 1]["Out_bit"].ToString() == "False")
                                                                {
                                                                    TimeSpan date          = NowDate - OutDate;
                                                                    double   remaindedHour = _CityTravelHour - date.TotalHours;
                                                                    string   RemaindeHour  = TimeSpan.FromDays(remaindedHour).ToString().Substring(0, TimeSpan.FromDays(remaindedHour).ToString().Length - 3);
                                                                    if (OutDate.AddHours(_CityTravelHour).CompareTo(NowDate) > 0)//date.TotalHours > _CityTravelHour)
                                                                    {
                                                                        Description = (string.Format("مدت سفراین ناوگان به مجوز< {0} >تمام نشده و مدت < {1} > مانده است ", dr[dr.Length - 1]["LadBillCreditID_int"], RemaindeHour));
                                                                        return(false);
                                                                    }
                                                                    else
                                                                    {
                                                                        DataTable TurnStatusDataTable = new DataTable();
                                                                        TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatusDataTable);
                                                                        if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                                                        {
                                                                            List <HPS.BLL.TrafficBLL.BLLTraffic_T> trafficList = new List <HPS.BLL.TrafficBLL.BLLTraffic_T>();
                                                                            trafficList = TrafficFactory.GetAllBy(HPS.BLL.TrafficBLL.BLLTraffic_T.Traffic_TField.TrafficNumber_bint, TrafficNumber_bint);
                                                                            if (trafficList != null && trafficList.Count > 0)
                                                                            {
                                                                                if (trafficList[0].In_bit == true && (trafficList[0].NumberPlate_nvc != NumberPlate_nvc || Convert.ToInt32(trafficList[0].SerialPlate_nvc) != Convert.ToInt32(SerialPlate_nvc)))
                                                                                {
                                                                                    Description = (string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                                                                    return(false);
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                DataTable TurnStatus = new DataTable();
                                                TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatus);
                                                if (TurnStatus != null && TurnStatus.Rows.Count > 0)
                                                {
                                                    DataTable TrafficStatusForAcceptTurnDataTable = new DataTable();
                                                    TrafficFactory.GetLastStatusForAcceptTurn((Int64)Hepsa.Core.Common.PersentationController.GetEntityValue(TurnStatus.Rows[TurnStatus.Rows.Count - 1]["TrafficID_bint"], TypeCode.Int64), TrafficStatusForAcceptTurnDataTable);
                                                    if (TrafficStatusForAcceptTurnDataTable != null && TrafficStatusForAcceptTurnDataTable.Rows.Count > 0 && Convert.ToBoolean(TrafficStatusForAcceptTurnDataTable.Rows[0]["HasTurn_bit"]) == true)
                                                    {
                                                        bool?LadBillCreditCancel = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["LadBillCreditCancel_bit"], TypeCode.Boolean);
                                                        bool?LadBillCreditTurn   = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["LadBillCreditTurn_bit"], TypeCode.Boolean);
                                                        bool?TurnReturn          = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["TurnReturn_bit"], TypeCode.Boolean);
                                                        bool?TurnCanceled        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["TurnCanceled_bit"], TypeCode.Boolean);
                                                        bool?TurnAccepted        = (bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(TrafficStatusForAcceptTurnDataTable.Rows[0]["TurnAccepted_bit"], TypeCode.Boolean);

                                                        if (LadBillCreditCancel.HasValue && LadBillCreditCancel == true)
                                                        {
                                                            if (LadBillCreditTurn.HasValue && LadBillCreditTurn == true)
                                                            {
                                                                Description = (string.Format("این ناوگان دارای شماره نوبت تأیید شده< {0} >می باشد", TrafficStatusForAcceptTurnDataTable.Rows[0]["AcceptedTurnNumber_bint"]));
                                                                return(false);
                                                            }
                                                        }
                                                        else
                                                        {
                                                            if (TurnCanceled.HasValue && TurnCanceled == true)
                                                            {
                                                                if (TurnReturn.HasValue && TurnReturn == true)
                                                                {
                                                                    //نوبت فعال
                                                                    DataTable TurnStatusDataTable = new DataTable();
                                                                    TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatusDataTable);
                                                                    if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                                                    {
                                                                        Description = (string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                                                        return(false);
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }

                                else
                                {
                                    DateTime  NowDate          = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(TrafficFactory.ServerJalaliDate)).MyDate.ToString("yyyy/MM/dd") + " " + TrafficFactory.ServerTime);
                                    DataTable TrafficDataTable = new DataTable();
                                    string    Condition        = string.Format("Traffic_T.NumberPlate_nvc='{0}' and SerialPlate_nvc='{1}'", NumberPlate_nvc, SerialPlate_nvc);
                                    TrafficFactory.GetAllByConditionWithLadBill(Condition, ref TrafficDataTable);

                                    if (TrafficDataTable != null && TrafficDataTable.Rows.Count > 0)
                                    {
                                        string    filter = "LadeAssignmentId_bint=Max(LadeAssignmentId_bint)";
                                        DataRow[] dr     = TrafficDataTable.Select(filter);
                                        if (dr != null && dr.Length > 0)
                                        {
                                            if (((bool?)Hepsa.Core.Common.PersentationController.GetEntityValue(dr[dr.Length - 1]["Turn_bit"], TypeCode.Boolean) == true && (bool)Hepsa.Core.Common.PersentationController.GetEntityValue(dr[dr.Length - 1]["Canceled_bit"], TypeCode.Boolean) == true) || (bool)Hepsa.Core.Common.PersentationController.GetEntityValue(dr[dr.Length - 1]["Canceled_bit"], TypeCode.Boolean) == false)
                                            {
                                                Int32 _CityTravelHour = 0;
                                                if (!string.IsNullOrEmpty(dr[dr.Length - 1]["TravelTime_int"].ToString()))
                                                {
                                                    _CityTravelHour = Convert.ToInt32(dr[dr.Length - 1]["TravelTime_int"].ToString());
                                                }
                                                string    _OutDate = dr[dr.Length - 1]["LadBillDate"].ToString();
                                                string    _OutTime = dr[dr.Length - 1]["LadBillTime"].ToString();
                                                DateTime  OutDate  = DateTime.Parse((new Hepsa.Core.Common.MyDateTime(_OutDate)).MyDate.ToString("yyyy/MM/dd") + " " + _OutTime);
                                                DataTable TrafficStatusForAcceptTurnDataTable = new DataTable();

                                                if (dr[dr.Length - 1]["Out_bit"].ToString() == "False")
                                                {
                                                    TimeSpan date          = NowDate - OutDate;
                                                    double   remaindedHour = _CityTravelHour - date.TotalHours;
                                                    string   RemaindeHour  = TimeSpan.FromDays(remaindedHour).ToString().Substring(0, TimeSpan.FromDays(remaindedHour).ToString().Length - 3);
                                                    if (OutDate.AddHours(_CityTravelHour).CompareTo(NowDate) > 0)
                                                    {
                                                        if (string.IsNullOrEmpty(dr[dr.Length - 1]["Canceled_bit"].ToString()) || dr[dr.Length - 1]["Canceled_bit"].ToString() == "False")
                                                        {
                                                            Description = (string.Format("مدت سفراین ناوگان به مجوز< {0} >تمام نشده و مدت < {1} > مانده است ", dr[dr.Length - 1]["LadBillCreditID_int"], RemaindeHour));
                                                            return(false);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        // نوبت داره
                                        DataTable TurnStatusDataTable = new DataTable();
                                        TrafficFactory.GetTurnStatus((string)Hepsa.Core.Common.PersentationController.GetEntityValue(NumberPlate_nvc, TypeCode.String), (string)Hepsa.Core.Common.PersentationController.GetEntityValue(SerialPlate_nvc, TypeCode.String), TurnStatusDataTable);
                                        if (TurnStatusDataTable != null && TurnStatusDataTable.Rows.Count > 0)
                                        {
                                            Description = (string.Format("ناوگان دارای شماره نوبت تأییدی < {0} >می باشد", TurnStatusDataTable.Rows[TurnStatusDataTable.Rows.Count - 1]["AcceptedTurnNumber_bint"]));
                                            return(false);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion
                ////////////////////////////////////
                return(true);
            }
            catch (System.Exception ex)
            {
                this.Description = ex.Message;
                return(false);
            }
        }