public ActionResult EditDelegation(DelegationsViewModel DelegationVM)
        {
            if (DelegationVM.DelegationType.DelegationTypeID == (Int32)DelegationsTypesEnum.Internal)
            {
                InternalDelegationBLL Delegation = new InternalDelegationBLL();
                Delegation.DelegationID   = DelegationVM.DelegationID;
                Delegation.DelegationKind = new DelegationsKindsBLL()
                {
                    DelegationKindID = DelegationVM.DelegationKind.DelegationKindID
                };
                Delegation.DelegationType = new DelegationsTypesBLL()
                {
                    DelegationTypeID = (int)DelegationsTypesEnum.Internal
                };
                Delegation.DelegationStartDate = DelegationVM.DelegationStartDate;
                Delegation.DelegationEndDate   = DelegationVM.DelegationEndDate;
                Delegation.DelegationReason    = DelegationVM.DelegationReason;
                Delegation.Notes = DelegationVM.Notes;
                Delegation.DelegationDistancePeriod = DelegationVM.DelegationDistancePeriod;
                Delegation.LoginIdentity            = UserIdentity;
                Delegation.KSACity = new KSACitiesBLL()
                {
                    KSACityID = DelegationVM.KSACity.KSACityID
                };
                Result result = Delegation.Update();

                BaseDelegationsBLL DelegationEntity = (BaseDelegationsBLL)result.Entity;
                if (result.EnumMember == DelegationsValidationEnum.Done.ToString())
                {
                    Session["DelegationID"] = ((InternalDelegationBLL)result.Entity).DelegationID;
                    ClearDelegationDetailsFromSession();
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseOfMaxLimit.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationAlreadyReachTheDelegationLimitText);
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseEmployeeRequired.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationEmployeeRequiredText);
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseOfAlreadyApprove.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationDelegationAlreadyApproveText);
                }

                Classes.Helpers.CommonHelper.ConflictValidationMessage(result);
            }
            else if (DelegationVM.DelegationType.DelegationTypeID == (Int32)DelegationsTypesEnum.External)
            {
                ExternalDelegationBLL Delegation = new ExternalDelegationBLL();
                Delegation.DelegationID   = DelegationVM.DelegationID;
                Delegation.DelegationKind = new DelegationsKindsBLL()
                {
                    DelegationKindID = DelegationVM.DelegationKind.DelegationKindID
                };
                Delegation.DelegationType = new DelegationsTypesBLL()
                {
                    DelegationTypeID = (int)DelegationsTypesEnum.External
                };
                Delegation.DelegationStartDate = DelegationVM.DelegationStartDate;
                Delegation.DelegationEndDate   = DelegationVM.DelegationEndDate;
                Delegation.DelegationReason    = DelegationVM.DelegationReason;
                Delegation.Notes = DelegationVM.Notes;
                Delegation.DelegationDistancePeriod = DelegationVM.DelegationDistancePeriod;
                Delegation.LoginIdentity            = UserIdentity;
                Delegation.Country = new CountriesBLL()
                {
                    CountryID = DelegationVM.Country.CountryID
                };
                Result result = Delegation.Update();
                //if ((System.Type)result.EnumType == typeof(DelegationsValidationEnum))
                //{
                BaseDelegationsBLL DelegationEntity = (BaseDelegationsBLL)result.Entity;
                if (result.EnumMember == DelegationsValidationEnum.Done.ToString())
                {
                    Session["DelegationID"] = ((ExternalDelegationBLL)result.Entity).DelegationID;
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseOfMaxLimit.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationAlreadyReachTheDelegationLimitText);
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseEmployeeRequired.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationEmployeeRequiredText);
                }
                //else if (result.EnumMember == NoConflictWithOtherProcessValidationEnum.RejectedBecauseOfConflictWithOverTime.ToString())
                //{
                //    throw new CustomException(Resources.Globalization.ValidationConflictWithOverTimeText);
                //}
                //else if (result.EnumMember == NoConflictWithOtherProcessValidationEnum.RejectedBecauseOfConflictWithDelegation.ToString())
                //{
                //    throw new CustomException(Resources.Globalization.ValidationConflictWithDelegationText);
                //}
                //else if (result.EnumMember == NoConflictWithOtherProcessValidationEnum.RejectedBecauseOfConflictWithInternshipScholarship.ToString())
                //{
                //    throw new CustomException(Resources.Globalization.ValidationConflictWithInternshipScholarshipText);
                //}
                //else if (result.EnumMember == NoConflictWithOtherProcessValidationEnum.RejectedBecauseOfConflictWithVacation.ToString())
                //{
                //    throw new CustomException(Resources.Globalization.ValidationConflictWithVacationText);
                //}
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseOfAlreadyApprove.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationDelegationAlreadyApproveText);
                }

                Classes.Helpers.CommonHelper.ConflictValidationMessage(result);
                //}
            }

            return(View(DelegationVM));
        }
        public ActionResult Create(DelegationsViewModel DelegationVM)
        {
            if (DelegationVM.DelegationType.DelegationTypeID == (Int32)DelegationsTypesEnum.Internal)
            {
                InternalDelegationBLL Delegation = new InternalDelegationBLL();
                Delegation.DelegationKind = new DelegationsKindsBLL()
                {
                    DelegationKindID = DelegationVM.DelegationKind.DelegationKindID
                };
                Delegation.DelegationType = new DelegationsTypesBLL()
                {
                    DelegationTypeID = (int)DelegationsTypesEnum.Internal
                };
                Delegation.DelegationStartDate = DelegationVM.DelegationStartDate;
                Delegation.DelegationEndDate   = DelegationVM.DelegationEndDate;
                Delegation.DelegationReason    = DelegationVM.DelegationReason;
                Delegation.Notes   = DelegationVM.Notes;
                Delegation.KSACity = new KSACitiesBLL()
                {
                    KSACityID = DelegationVM.KSACity.KSACityID
                };
                Delegation.DelegationDistancePeriod = DelegationVM.DelegationDistancePeriod;
                Delegation.LoginIdentity            = UserIdentity;
                Delegation.DelegationsDetails       = GetDelegationDetailsFromSession();
                Result result = Delegation.Add();

                BaseDelegationsBLL DelegationEntity = (BaseDelegationsBLL)result.Entity;
                if (result.EnumMember == DelegationsValidationEnum.Done.ToString())
                {
                    DelegationVM.DelegationID = ((InternalDelegationBLL)result.Entity).DelegationID;
                    ClearDelegationDetailsFromSession();
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseOfDelegationDatesMustBeInSameFinancialYear.ToString())
                {
                    FinancialYearsBLL FinancialYearBLL = (FinancialYearsBLL)result.Entity;
                    throw new CustomException(Resources.Globalization.ValidationDelegationDatesMustBeInSameFinancialYearText + " NewLine" +
                                              Resources.Globalization.FinancialYearInfoText + FinancialYearBLL.FinancialYear + " NewLine" +
                                              Resources.Globalization.FinancialYearStartDateText + FinancialYearBLL.FinancialYearStartDate.Date.ToString(Classes.Helpers.CommonHelper.DateFormat) + " NewLine" +
                                              Resources.Globalization.FinancialYearEndDateText + FinancialYearBLL.FinancialYearEndDate.Date.ToString(Classes.Helpers.CommonHelper.DateFormat));
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseOfMaxLimit.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationAlreadyReachTheDelegationLimitText);
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseEmployeeRequired.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationEmployeeRequiredText);
                }

                Classes.Helpers.CommonHelper.ConflictValidationMessage(result);
            }
            else if (DelegationVM.DelegationType.DelegationTypeID == (Int32)DelegationsTypesEnum.External)
            {
                ExternalDelegationBLL Delegation = new ExternalDelegationBLL();
                Delegation.DelegationKind = new DelegationsKindsBLL()
                {
                    DelegationKindID = DelegationVM.DelegationKind.DelegationKindID
                };
                Delegation.DelegationType = new DelegationsTypesBLL()
                {
                    DelegationTypeID = (int)DelegationsTypesEnum.External
                };
                Delegation.DelegationStartDate = DelegationVM.DelegationStartDate;
                Delegation.DelegationEndDate   = DelegationVM.DelegationEndDate;
                Delegation.DelegationReason    = DelegationVM.DelegationReason;
                Delegation.Notes = DelegationVM.Notes;
                Delegation.DelegationDistancePeriod = DelegationVM.DelegationDistancePeriod;
                Delegation.LoginIdentity            = UserIdentity;
                Delegation.Country = new CountriesBLL()
                {
                    CountryID = DelegationVM.Country.CountryID
                };
                Delegation.DelegationsDetails = GetDelegationDetailsFromSession();
                Result result = Delegation.Add();
                //if ((System.Type)result.EnumType == typeof(DelegationsValidationEnum))
                //{
                BaseDelegationsBLL DelegationEntity = (BaseDelegationsBLL)result.Entity;
                if (result.EnumMember == DelegationsValidationEnum.Done.ToString())
                {
                    DelegationVM.DelegationID = ((ExternalDelegationBLL)result.Entity).DelegationID;
                    ClearDelegationDetailsFromSession();
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseOfDelegationDatesMustBeInSameFinancialYear.ToString())
                {
                    FinancialYearsBLL FinancialYearBLL = (FinancialYearsBLL)result.Entity;
                    throw new CustomException(Resources.Globalization.ValidationDelegationDatesMustBeInSameFinancialYearText + " NewLine" +
                                              Resources.Globalization.FinancialYearInfoText + FinancialYearBLL.FinancialYear + " NewLine" +
                                              Resources.Globalization.FinancialYearStartDateText + FinancialYearBLL.FinancialYearStartDate.Date.ToString(Classes.Helpers.CommonHelper.DateFormat) + " NewLine" +
                                              Resources.Globalization.FinancialYearEndDateText + FinancialYearBLL.FinancialYearEndDate.Date.ToString(Classes.Helpers.CommonHelper.DateFormat));
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseOfMaxLimit.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationAlreadyReachTheDelegationLimitText);
                }
                else if (result.EnumMember == DelegationsValidationEnum.RejectedBecauseEmployeeRequired.ToString())
                {
                    throw new CustomException(Resources.Globalization.ValidationEmployeeRequiredText);
                }

                Classes.Helpers.CommonHelper.ConflictValidationMessage(result);
            }

            return(Json(new { DelegationID = DelegationVM.DelegationID }, JsonRequestBehavior.AllowGet));
        }