Exemple #1
0
        public RetrieveAllPagedResultOutput <TeamDto, long> RetrieveAllPagedResult(RetrieveAllTeamsPagedResultInput input)
        {
            if (input.IsActive ?? true)
            {
                UowManager.Current.EnableFilter(Filters.IPassivableFilter);
            }

            TeamRepository.Includes.Add(r => r.LastModifierUser);
            TeamRepository.Includes.Add(r => r.CreatorUser);
            TeamRepository.Includes.Add(r => r.PlayerCareers);

            IQueryable <Team> teamsQuery = TeamPolicy.CanRetrieveManyEntities(
                TeamRepository.GetAll()
                .WhereIf(!input.TeamIds.IsNullOrEmpty(), r => input.TeamIds.Contains(r.Id))
                .WhereIf(input.DivisionId != null, r => r.DivisionId == input.DivisionId)
                .WhereIf(!String.IsNullOrEmpty(input.Name), r => r.Name.ToLower().Contains(input.Name.ToLower())));

            int totalCount = teamsQuery.Count();
            IReadOnlyList <TeamDto> teamDtos = teamsQuery
                                               .OrderByDescending(r => r.IsActive).ThenBy(r => r.Name)
                                               .Skip(input.SkipCount).Take(input.MaxResultCount)
                                               .ToList().MapIList <Team, TeamDto>().ToList();

            TeamRepository.Includes.Clear();

            return(new RetrieveAllPagedResultOutput <TeamDto, long>()
            {
                Items = teamDtos,
                TotalCount = totalCount
            });
        }
Exemple #2
0
        public UpdateOutput <TeamDto, long> Update(UpdateTeamInput input)
        {
            TeamRepository.Includes.Add(r => r.LastModifierUser);
            TeamRepository.Includes.Add(r => r.CreatorUser);
            TeamRepository.Includes.Add(r => r.PlayerCareers);

            Team currentTeamEntity = TeamRepository.Get(input.Entity.Id);

            if (currentTeamEntity == null)
            {
                throw new CityQuestItemNotFoundException(CityQuestConsts.CityQuestItemNotFoundExceptionMessageBody, "\"Team\"");
            }

            if (!TeamPolicy.CanUpdateEntity(currentTeamEntity))
            {
                throw new CityQuestPolicyException(CityQuestConsts.CQPolicyExceptionUpdateDenied, "\"Team\"");
            }

            TeamRepository.Detach(currentTeamEntity);

            Team newTeamEntity = input.Entity.MapTo <Team>();

            newTeamEntity.IsDefault = currentTeamEntity.IsDefault;


            TeamRepository.Update(newTeamEntity);
            TeamDto newTeamDto = (TeamRepository.Get(newTeamEntity.Id)).MapTo <TeamDto>();

            TeamRepository.Includes.Clear();

            return(new UpdateOutput <TeamDto, long>()
            {
                UpdatedEntity = newTeamDto
            });
        }
Exemple #3
0
        public ChangeCaptainOutput ChangeCaptain(ChangeCaptainInput input)
        {
            TeamRepository.Includes.Add(r => r.PlayerCareers);

            Team teamEntity = TeamRepository.Get(input.TeamId);

            if (teamEntity == null)
            {
                throw new CityQuestItemNotFoundException(CityQuestConsts.CityQuestItemNotFoundExceptionMessageBody, "\"Team\"");
            }

            if (!TeamPolicy.CanChangeCaptainForEntity(teamEntity))
            {
                throw new CityQuestPolicyException(CityQuestConsts.CQPolicyExceptionUpdateDenied, "\"Team\"");
            }

            PlayerCareer newCap = teamEntity.PlayerCareers.SingleOrDefault(r => r.Id == input.NewCaptainCareerId);

            if (newCap != null)
            {
                var oldCap = teamEntity.Captain;

                if (oldCap.Id != newCap.Id)
                {
                    newCap.IsCaptain = true;
                    PlayerCareerRepository.Update(newCap);

                    oldCap.IsCaptain = false;
                    PlayerCareerRepository.Update(oldCap);
                }
            }

            return(new ChangeCaptainOutput());
        }
        public override string TryToExecute(CommandReceivedEventArgs eventArgs,
                                            Survivor survivor)
        {
            string teamArg = eventArgs.Arguments.ElementAtOrDefault(1);

            if (teamArg == null || !int.TryParse(teamArg, out int teamId))
            {
                return(NO_TEAM_ERROR);
            }

            var team = _gameRepository.Single(TeamPolicy.ById(teamId));

            if (team == null)
            {
                return(NO_TEAM_ERROR);
            }

            if (team.Join(survivor))
            {
                _gameRepository.Update(team);
                return($"Welcome to the {team.Name} team, {survivor.DisplayName}!");
            }

            return("Failed to join team.");
        }
Exemple #5
0
        public CreateOutput <TeamDto, long> Create(CreateTeamInput input)
        {
            Team newTeamEntity = input.Entity.MapTo <Team>();

            if (!TeamPolicy.CanCreateEntity(newTeamEntity))
            {
                throw new CityQuestPolicyException(CityQuestConsts.CQPolicyExceptionCreateDenied, "\"Team\"");
            }

            newTeamEntity.IsActive  = true;
            newTeamEntity.IsDefault = false;

            TeamRepository.Includes.Add(r => r.LastModifierUser);
            TeamRepository.Includes.Add(r => r.CreatorUser);
            TeamRepository.Includes.Add(r => r.PlayerCareers);

            TeamDto newTeamDto = (TeamRepository.Insert(newTeamEntity)).MapTo <TeamDto>();

            TeamRepository.Includes.Clear();

            return(new CreateOutput <TeamDto, long>()
            {
                CreatedEntity = newTeamDto
            });
        }
Exemple #6
0
        public RetrieveAllOutput <TeamDto, long> RetrieveAll(RetrieveAllTeamsInput input)
        {
            if (input.IsActive ?? true)
            {
                UowManager.Current.EnableFilter(Filters.IPassivableFilter);
            }

            TeamRepository.Includes.Add(r => r.LastModifierUser);
            TeamRepository.Includes.Add(r => r.CreatorUser);
            TeamRepository.Includes.Add(r => r.PlayerCareers);

            IList <Team> teamEntities = TeamPolicy.CanRetrieveManyEntities(
                TeamRepository.GetAll()
                .WhereIf(!input.TeamIds.IsNullOrEmpty(), r => input.TeamIds.Contains(r.Id))
                .WhereIf(input.DivisionId != null, r => r.DivisionId == input.DivisionId)
                .WhereIf(!String.IsNullOrEmpty(input.Name), r => r.Name.ToLower().Contains(input.Name.ToLower())))
                                        .ToList();

            IList <TeamDto> result = teamEntities.MapIList <Team, TeamDto>();

            TeamRepository.Includes.Clear();

            return(new RetrieveAllOutput <TeamDto, long>()
            {
                RetrievedEntities = result
            });
        }
        public override string TryToExecute(CommandReceivedEventArgs eventArgs, Survivor survivor)
        {
            List <Team> teams = _gameRepository.List(TeamPolicy.All());

            var teamStats = teams
                            .Select(t => new { t.Name, Total = t.Members.Sum(m => m.Money) })
                            .OrderByDescending(x => x.Total)
                            .Select(x => $"{x.Name}:{x.Total}");

            return($"The wealthiest teams are: {string.Join(", ", teamStats)}.");
        }
Exemple #8
0
        public ChangeActivityOutput <TeamDto, long> ChangeActivity(ChangeActivityInput input)
        {
            TeamRepository.Includes.Add(r => r.LastModifierUser);
            TeamRepository.Includes.Add(r => r.CreatorUser);
            TeamRepository.Includes.Add(r => r.PlayerCareers);

            Team teamEntity = TeamRepository.Get(input.EntityId);

            if (teamEntity == null)
            {
                throw new CityQuestItemNotFoundException(CityQuestConsts.CityQuestItemNotFoundExceptionMessageBody, "\"Team\"");
            }

            if (!TeamPolicy.CanChangeActivityForEntity(teamEntity))
            {
                throw new CityQuestPolicyException(CityQuestConsts.CQPolicyExceptionChangeActivityDenied, "\"Team\"");
            }

            teamEntity.IsActive = input.IsActive == null ? !teamEntity.IsActive : (bool)input.IsActive;
            TeamDto newTeamDto = teamEntity.MapTo <TeamDto>();

            TeamRepository.Update(teamEntity);

            #region Closing player careers

            if (teamEntity.CurrentPlayers.Count() > 0)
            {
                DateTime currDT  = DateTime.Now;
                var      players = teamEntity.CurrentPlayers.ToList();
                foreach (var item in players)
                {
                    item.CareerDateEnd = currDT;
                    PlayerCareerRepository.Update(item);
                }
            }

            #endregion

            TeamRepository.Includes.Clear();

            return(new ChangeActivityOutput <TeamDto, long>()
            {
                Entity = newTeamDto
            });
        }
Exemple #9
0
        public RetrieveAllTeamsLikeComboBoxesOutput RetrieveAllTeamsLikeComboBoxes(RetrieveAllTeamsLikeComboBoxesInput input)
        {
            if (input.IsActive ?? true)
            {
                UowManager.Current.EnableFilter(Filters.IPassivableFilter);
            }

            IReadOnlyList <ComboboxItemDto> teamsLikeComboBoxes = TeamPolicy.CanRetrieveManyEntities(
                TeamRepository.GetAll()
                .WhereIf(input.DivisionId != null, r => r.DivisionId == input.DivisionId)).ToList()
                                                                  .Select(r => new ComboboxItemDto(r.Id.ToString(), r.Name))
                                                                  .OrderBy(r => r.DisplayText).ToList();

            return(new RetrieveAllTeamsLikeComboBoxesOutput()
            {
                Items = teamsLikeComboBoxes
            });
        }
Exemple #10
0
        public DeleteOutput <long> Delete(DeleteInput <long> input)
        {
            Team teamEntityForDelete = TeamRepository.Get(input.EntityId);

            if (teamEntityForDelete == null)
            {
                throw new CityQuestItemNotFoundException(CityQuestConsts.CityQuestItemNotFoundExceptionMessageBody, "\"Team\"");
            }

            if (!TeamPolicy.CanDeleteEntity(teamEntityForDelete))
            {
                throw new CityQuestPolicyException(CityQuestConsts.CQPolicyExceptionDeleteDenied, "\"Team\"");
            }

            TeamRepository.Delete(teamEntityForDelete);

            return(new DeleteOutput <long>()
            {
                DeletedEntityId = input.EntityId
            });
        }
Exemple #11
0
        public RetrieveOutput <TeamDto, long> Retrieve(RetrieveTeamInput input)
        {
            if (input.IsActive ?? true)
            {
                UowManager.Current.EnableFilter(Filters.IPassivableFilter);
            }

            TeamRepository.Includes.Add(r => r.LastModifierUser);
            TeamRepository.Includes.Add(r => r.CreatorUser);
            TeamRepository.Includes.Add(r => r.PlayerCareers);

            IList <Team> teamEntities = TeamRepository.GetAll()
                                        .WhereIf(input.Id != null, r => r.Id == input.Id)
                                        .WhereIf(input.UserId != null, r => r.PlayerCareers.Any(e => e.CareerDateEnd == null && e.UserId == input.UserId))
                                        .WhereIf(!String.IsNullOrEmpty(input.Name), r => r.Name.ToLower().Contains(input.Name.ToLower()))
                                        .ToList();

            if (teamEntities.Count != 1)
            {
                throw new CityQuestItemNotFoundException(CityQuestConsts.CityQuestItemNotFoundExceptionMessageBody, "\"Team\"");
            }

            if (!TeamPolicy.CanRetrieveEntity(teamEntities.Single()))
            {
                throw new CityQuestPolicyException(CityQuestConsts.CQPolicyExceptionRetrieveDenied, "\"Team\"");
            }

            TeamDto teamEntity = teamEntities.Single().MapTo <TeamDto>();

            TeamRepository.Includes.Clear();

            return(new RetrieveOutput <TeamDto, long>()
            {
                RetrievedEntity = teamEntity
            });
        }
Exemple #12
0
        private void InitlblData()
        {
            TeamPolicy team = PolicyManageService.GetTeamPolicy(Guid.Parse(Request.QueryString["id"].ToString()));

            if (team != null)
            {
                if (team.VoyageType == VoyageType.OneWay)
                {
                    returnFilght.Style.Add(HtmlTextWriterStyle.Display, "none");
                    lblDepartureShowOrHide.Style.Add(HtmlTextWriterStyle.Display, "none");
                }
                hidIds.Value                = Request.QueryString["id"];
                lblAirline.Text             = team.Airline;
                lblArrival.Text             = team.Arrival;
                lblVoyage.Text              = team.VoyageType.GetDescription();
                lblOffice.Text              = team.OfficeCode;
                lblCutomerCode.Text         = team.CustomCode;
                lblExceptAirlines.Text      = team.ExceptAirways;
                lblExceptDay.Text           = team.DepartureDateFilter;
                lblDepartureWeekFilter.Text = PublicClass.StringOperation.TransferToChinese(team.DepartureWeekFilter);
                lblTicket.Text              = team.TicketType.GetDescription();
                lblDeparture.Text           = team.Departure;
                lblDepartureDate.Text       = (team.DepartureDateStart.ToString("yyyy-MM-dd")) + "至" + (team.DepartureDateEnd.ToString("yyyy-MM-dd"));
                lblCreateTime.Text          = team.StartPrintDate.ToString("yyyy-MM-dd");
                lblBunks.Text               = team.Berths;
                lblDepartureFilght.Text     = team.DepartureFlightsFilterType == LimitType.None ? "所有" : (team.DepartureFlightsFilterType == LimitType.Include ? "适用:" + team.DepartureFlightsFilter : "不适用:" + team.DepartureFlightsFilter);
                lblXiaJi.Text               = (team.SubordinateCommission * 100).TrimInvaidZero() + "%";
                lblPrintBeforeTwoHours.Text = team.PrintBeforeTwoHours ? "可以" : "不可以";
                if (team.IsInternal)
                {
                    lblNeiBu.Text = (team.InternalCommission * 100).TrimInvaidZero() + "%";
                }
                else
                {
                    this.internalTitle.Visible = false;
                    this.internalValue.Visible = false;
                }
                if (team.IsPeer)
                {
                    lblTongHang.Text = ((team.ProfessionCommission) * 100).TrimInvaidZero() + "%";
                }
                else
                {
                    this.proffessionTitle.Visible = false;
                    this.proffessionValue.Visible = false;
                }
                lblLock.Text   = team.Freezed ? "锁定" : "未锁定";
                lblRemaek.Text = team.Remark;
                lblChang.Text  = team.ChangePNR ? "需要" : "不需要";

                lblDrawerCondition.Text = team.DrawerCondition;
                if (team.Freezed)
                {
                    this.btnunlock.Visible = true;
                    this.btnlock.Visible   = false;
                    this.unlock.Visible    = true;
                    [email protected]     = false;
                }
                else
                {
                    this.btnunlock.Visible = false;
                    this.btnlock.Visible   = true;
                    this.unlock.Visible    = false;
                    [email protected]     = true;
                }
                if (team.VoyageType == VoyageType.OneWayOrRound || team.VoyageType == VoyageType.RoundTrip || team.VoyageType == VoyageType.TransitWay)
                {
                    this.lblRetnrnFilght.Text = team.ReturnFlightsFilterType == LimitType.None ? "不限" : (team.ReturnFlightsFilterType == LimitType.Include ? "适用以下航班:" + team.ReturnFlightsFilter : "不适用以下航班:" + team.ReturnFlightsFilter);
                    lblSuitReduce.Text        = team.SuitReduce ? "适用" : "不适用";
                }
                else
                {
                    suitBerthTitle.Visible = false;
                    suitBerthValue.Visible = false;
                }
                if (team.VoyageType == VoyageType.TransitWay)
                {
                    this.lblVoyageType.Text          = "联程";
                    this.lblDepartureShowOrHide.Text = "第一程";
                    this.lblArrivalShowOrHide.Text   = "第二程";
                    this.transit.Visible             = true;
                    this.lblTransit.Text             = team.Transit;
                    lblMultiSuitReduce.Text          = team.MultiSuitReduce ? "适用" : "不适用";
                }
                else
                {
                    duoduanTitle.Visible = false;
                    duoduanValue.Visible = false;
                }
            }
        }
        private bool GetTeamValue(string type)
        {
            VoyageType voyage = VoyageType.OneWay;

            if (titlePolicy.InnerText == "单程")
            {
                voyage = VoyageType.OneWay;
            }
            else if (titlePolicy.InnerText == "往返")
            {
                voyage = VoyageType.RoundTrip;
            }
            else if (titlePolicy.InnerText == "单程·往返")
            {
                voyage = VoyageType.OneWayOrRound;
            }
            else if (titlePolicy.InnerText == "中转联程")
            {
                voyage = VoyageType.TransitWay;
            }
            LimitType derpartrueFilghtType = LimitType.None;

            if (radYiXia.Checked)
            {
                derpartrueFilghtType = LimitType.Include;
            }
            if (radBuXian.Checked)
            {
                derpartrueFilghtType = LimitType.None;
            }
            if (radBuYiXia.Checked)
            {
                derpartrueFilghtType = LimitType.Exclude;
            }

            LimitType returnFilghtType = LimitType.None;

            if (radReturnYiXia.Checked)
            {
                returnFilghtType = LimitType.Include;
            }
            if (radReturnBuXian.Checked)
            {
                returnFilghtType = LimitType.None;
            }
            if (radReturnBuYiXia.Checked)
            {
                returnFilghtType = LimitType.Exclude;
            }
            string weekStr = "";

            if (mon.Checked)
            {
                weekStr += "1,";
            }
            if (tue.Checked)
            {
                weekStr += "2,";
            }
            if (wed.Checked)
            {
                weekStr += "3,";
            }
            if (thur.Checked)
            {
                weekStr += "4,";
            }
            if (fri.Checked)
            {
                weekStr += "5,";
            }
            if (sat.Checked)
            {
                weekStr += "6,";
            }
            if (sun.Checked)
            {
                weekStr += "7,";
            }
            if (weekStr != "")
            {
                weekStr = weekStr.Substring(0, weekStr.Length - 1);
            }

            var teams = PolicyManageService.GetTeamPolicy(Guid.Parse(Request.QueryString["Id"]));

            try
            {
                if (type == "Update")
                {
                    var team = new TeamPolicy
                    {
                        Airline                    = lblAirline.Text,
                        Arrival                    = txtArrivalAirports.AirportsCode.ToList().Join("/"),
                        OfficeCode                 = hidOfficeNo.Value,
                        AutoAudit                  = chkAuto.Checked,
                        ChangePNR                  = chkChangePNR.Checked,
                        IsInternal                 = neibuTh.Visible,
                        IsPeer                     = tonghang.Visible,
                        CustomCode                 = ddlCustomCode.Visible ? ddlCustomCode.SelectedValue.Trim() : lblCustomerCode.Text,
                        Departure                  = txtDepartureAirports.AirportsCode.ToList().Join("/"),
                        Transit                    = "",
                        DepartureDateEnd           = DateTime.Parse(txtDepartrueEnd.Text),
                        DepartureDateStart         = DateTime.Parse(txtDepartrueStart.Text),
                        DepartureFlightsFilter     = derpartrueFilghtType == LimitType.None ? "" : txtDepartrueFilght.Text,
                        DepartureFlightsFilterType = derpartrueFilghtType,
                        Remark                     = txtRemark.Text.Replace("\r", "").Replace("\n", ""),
                        DrawerCondition            = txtDrawerCondition.Text.Replace("\r", "").Replace("\n", ""),
                        ReturnFlightsFilter        = returnFilghtType == LimitType.None ? "" : txtReturnFilght.Text,
                        ReturnFlightsFilterType    = returnFilghtType,
                        SuitReduce                 = chkRound.Checked,
                        MultiSuitReduce            = chkddlc.Checked,
                        StartPrintDate             = DateTime.Parse(txtProvideDate.Text),
                        DepartureDateFilter        = txtPaiChu.Text,
                        DepartureWeekFilter        = weekStr,
                        SubordinateCommission      = decimal.Parse(txtSubordinateCommission.Text) / 100,
                        ProfessionCommission       = tonghang.Visible ? decimal.Parse(txtProfessionCommission.Text) / 100 : -1M,
                        InternalCommission         = neibuTh.Visible ? decimal.Parse(txtInternalCommission.Text) / 100 : -1M,
                        ExceptAirways              = txtExceptAirways.Text,
                        TicketType                 = chkTicket.Text == "B2B" ? TicketType.B2B : TicketType.BSP,
                        Berths                     = hidBunks.Value,
                        VoyageType                 = voyage,
                        ImpowerOffice              = Convert.ToBoolean(dropOffice.SelectedValue),
                        Audited                    = teams.Audited,
                        AuditTime                  = teams.AuditTime,
                        AutoPrint                  = teams.AutoPrint,
                        CreateTime                 = teams.CreateTime,
                        Creator                    = teams.Creator,
                        Freezed                    = teams.Freezed,
                        Owner               = teams.Owner,
                        Suspended           = teams.Suspended,
                        Id                  = Guid.Parse(Request.QueryString["Id"]),
                        AppointBerths       = zhiding.Checked,
                        PrintBeforeTwoHours = chkPrintBeforeTwoHours.Checked
                    };
                    if (zhongzhuanTh.Visible)
                    {
                        team.Arrival = txtZhongzhuanAirports.AirportsCode.Join("/");
                        team.Transit = txtArrivalAirports.AirportsCode.Join("/");
                    }
                    if (team.Departure.Trim() == "")
                    {
                        RegisterScript("alert('出发地不能为空,请选择至少一个城市作为出发地!');");
                        return(false);
                    }
                    if (team.VoyageType == VoyageType.TransitWay && team.Transit.Trim() == "")
                    {
                        RegisterScript("alert('中转地不能为空,请选择至少一个城市作为出发地!');");
                        return(false);
                    }
                    if (team.Arrival.Trim() == "")
                    {
                        RegisterScript("alert('到达地不能为空,请选择至少一个城市作为出发地!');");
                        return(false);
                    }
                    PolicyManageService.UpdateTeamPolicy(team, this.CurrentUser.UserName);
                }
                if (type == "Copy")
                {
                    var teamInfo = new TeamPolicyReleaseInfo
                    {
                        BasicInfo = new TeamPolicyBasicInfo
                        {
                            CustomCode                 = ddlCustomCode.Visible ? ddlCustomCode.SelectedValue.Trim() : lblCustomerCode.Text,
                            IsInternal                 = neibuTh.Visible,
                            IsPeer                     = tonghang.Visible,
                            Airline                    = ddlAirline.SelectedValue,
                            Arrival                    = txtArrivalAirports.AirportsCode.ToList().Join("/"),
                            Transit                    = "",
                            Departure                  = txtDepartureAirports.AirportsCode.ToList().Join("/"),
                            DepartureFlightsFilter     = derpartrueFilghtType == LimitType.None ? "" : txtDepartrueFilght.Text,
                            DepartureFlightsFilterType = derpartrueFilghtType,
                            Remark                     = txtRemark.Text.Replace("\r", "").Replace("\n", ""),
                            DrawerCondition            = txtDrawerCondition.Text.Replace("\r", "").Replace("\n", ""),
                            ReturnFlightsFilter        = returnFilghtType == LimitType.None ? "" : txtReturnFilght.Text,
                            ReturnFlightsFilterType    = returnFilghtType,
                            ExceptAirways              = txtExceptAirways.Text,
                            VoyageType                 = voyage,
                            OfficeCode                 = hidOfficeNo.Value,
                            ImpowerOffice              = Convert.ToBoolean(dropOffice.SelectedValue),
                            Owner = this.CurrentUser.Owner
                        }
                    }; if (zhongzhuanTh.Visible)
                    {
                        teamInfo.BasicInfo.Arrival = txtZhongzhuanAirports.AirportsCode.Join("/");
                        teamInfo.BasicInfo.Transit = txtArrivalAirports.AirportsCode.Join("/");
                    }
                    var list = new List <TeamPolicyRebateInfo>
                    {
                        new TeamPolicyRebateInfo
                        {
                            DepartureDateFilter   = txtPaiChu.Text,
                            DepartureWeekFilter   = weekStr,
                            AutoAudit             = chkAuto.Checked,
                            ChangePNR             = chkChangePNR.Checked,
                            DepartureDateEnd      = DateTime.Parse(txtDepartrueEnd.Text),
                            DepartureDateStart    = DateTime.Parse(txtDepartrueStart.Text),
                            SuitReduce            = chkRound.Checked,
                            StartPrintDate        = DateTime.Parse(txtProvideDate.Text),
                            SubordinateCommission = decimal.Parse(txtSubordinateCommission.Text),
                            ProfessionCommission  = tonghang.Visible ? decimal.Parse(txtProfessionCommission.Text): -1M,
                            InternalCommission    = neibuTh.Visible ? decimal.Parse(txtInternalCommission.Text): -1M,
                            TicketType            = chkTicket.Text == "B2B" ? TicketType.B2B : TicketType.BSP,
                            Berths              = hidBunks.Value,
                            MultiSuitReduce     = chkddlc.Checked,
                            AppointBerths       = zhiding.Checked,
                            PrintBeforeTwoHours = chkPrintBeforeTwoHours.Checked
                        }
                    };
                    teamInfo.Rebates = list;
                    if (teamInfo.BasicInfo.Departure.Trim() == "")
                    {
                        RegisterScript("alert('出发地不能为空,请选择至少一个城市作为出发地!');");
                        return(false);
                    }
                    if (teamInfo.BasicInfo.VoyageType == VoyageType.TransitWay && teamInfo.BasicInfo.Transit.Trim() == "")
                    {
                        RegisterScript("alert('中转地不能为空,请选择至少一个城市作为出发地!');");
                        return(false);
                    }
                    if (teamInfo.BasicInfo.Arrival.Trim() == "")
                    {
                        RegisterScript("alert('到达地不能为空,请选择至少一个城市作为出发地!');");
                        return(false);
                    }
                    PolicyManageService.ReleaseTeamPolicies(teamInfo, this.CurrentUser.UserName);
                }
                if (Request.QueryString["Check"] == "view")
                {
                    RegisterScript(
                        type == "Update"
                            ? "alert('修改成功');window.location.href='./team_policy_view.aspx'"
                            : "alert('复制成功');window.location.href='./team_policy_view.aspx'", true);
                }
                else
                {
                    RegisterScript(
                        type == "Update"
                            ? "alert('修改成功');window.location.href='./team_policy_manage.aspx'"
                            : "alert('复制成功');window.location.href='./team_policy_manage.aspx'", true);
                }
            }
            catch (Exception ex)
            {
                ShowExceptionMessage(ex, type == "Update" ? "修改团队政策" : "复制团队政策");
            }
            return(true);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterOEMSkins("form.css");
            RegisterOEMSkins("page.css");
            if (!IsPostBack)
            {
                SettingPolicy setting = CompanyService.GetPolicySetting(this.CurrentCompany.CompanyId);

                var company = CompanyService.GetCompanySettingsInfo(CurrentCompany.CompanyId);
                if (company != null && company.Parameter.CanHaveSubordinate)
                {
                    neibuTh.Visible      = true;
                    neibufanyong.Visible = true;
                }
                else
                {
                    neibuTh.Visible      = false;
                    neibufanyong.Visible = false;
                }
                cutomeTh.Visible      = company != null && company.WorkingSetting != null && company.WorkingSetting.IsImpower;
                ddlCustomCode.Visible = company != null && company.WorkingSetting != null && company.WorkingSetting.IsImpower;

                if (setting == null)
                {
                    RegisterScript("alert('还未有任何政策设置信息,不能访问本页面!');window.location.href='/Index.aspx';", true);
                    return;
                }
                if (setting.Airlines == "")
                {
                    RegisterScript("alert('还没有设置航空公司,请先设置航空公司!');window.location.href='/Index.aspx';", true);
                    return;
                }
                this.txtDepartureAirports.InitData(true, ChinaPay.B3B.Service.FoundationService.Airports.Where(item => setting.Departure.Split('/').Contains(item.Code.Value)));
                //this.txtArrivalAirports.InitData(true, FoundationService.Airports.Where(item => setting.Departure.Split('/').Contains(item.Code.Value)));


                bool allowBrotherPurchases = false;
                if (company != null)
                {
                    allowBrotherPurchases = company.Parameter.AllowBrotherPurchase;
                }

                tonghangTh.Visible = allowBrotherPurchases;
                tonghang.Visible   = allowBrotherPurchases;

                dropOffice.DataSource     = CompanyService.QueryOfficeNumbers(this.CurrentCompany.CompanyId);
                dropOffice.DataTextField  = "Number";
                dropOffice.DataValueField = "Impower";
                dropOffice.DataBind();

                ddlCustomCode.DataSource     = CompanyService.GetCustomNumberByEmployee(CurrentUser.Id);
                ddlCustomCode.DataTextField  = "Number";
                ddlCustomCode.DataValueField = "Number";
                ddlCustomCode.DataBind();


                if (Request.QueryString["Id"] != null && Request.QueryString["Type"] != null)
                {
                    if (Request.QueryString["Type"].Trim() == "Update")
                    {
                        tip.InnerText      = "修改团队政策";
                        chkAuto.Visible    = false;
                        btnCopy.Visible    = false;
                        btnModify.Visible  = true;
                        lblAirline.Visible = true;
                        ddlAirline.Visible = false;
                    }
                    if (Request.QueryString["Type"].Trim() == "Copy")
                    {
                        tip.InnerText      = "复制团队政策";
                        chkAuto.Visible    = true;
                        btnCopy.Visible    = true;
                        btnModify.Visible  = false;
                        lblAirline.Visible = false;
                        ddlAirline.Visible = true;
                        string[] strIds = setting.Airlines.Split('/');
                        ddlAirline.DataSource = from item in ChinaPay.B3B.Service.FoundationService.Airlines
                                                where item.Valid && strIds.Contains(item.Code.Value)
                                                select new
                        {
                            Code = item.Code,
                            Name = item.Code + "-" + item.ShortName
                        };
                        ddlAirline.DataTextField  = "Name";
                        ddlAirline.DataValueField = "Code";
                        ddlAirline.DataBind();
                    }

                    TeamPolicy team = PolicyManageService.GetTeamPolicy(Guid.Parse(Request.QueryString["Id"]));
                    InitDataValues(team);
                }
            }
        }
        private void InitDataValues(TeamPolicy team)
        {
            chkTicket.Text = team.TicketType == TicketType.B2B ? "B2B" : "BSP";
            //航空公司
            this.lblAirline.Text     = team.Airline;
            ddlAirline.SelectedValue = team.Airline;
            //去程航班开始时间
            this.txtDepartrueStart.Text = team.DepartureDateStart.ToString("yyyy-MM-dd");
            //去程航班结束时间
            this.txtDepartrueEnd.Text = team.DepartureDateEnd.ToString("yyyy-MM-dd");

            //去程航班
            this.txtDepartrueFilght.Text = team.DepartureFlightsFilter;
            if (team.VoyageType != VoyageType.OneWay)
            {
                //回程航班
                this.txtReturnFilght.Text = team.ReturnFlightsFilter;
                //回程航班类型
                if (team.ReturnFlightsFilterType == Common.Enums.LimitType.None)
                {
                    radReturnBuXian.Checked = true;
                }
                if (team.ReturnFlightsFilterType == Common.Enums.LimitType.Include)
                {
                    radReturnYiXia.Checked = true;
                }
                if (team.ReturnFlightsFilterType == Common.Enums.LimitType.Exclude)
                {
                    radReturnBuYiXia.Checked = true;
                }
            }
            else
            {
                this.returnFilghtDates.Style.Add(HtmlTextWriterStyle.Display, "none");
                this.wangfan.Style.Add(HtmlTextWriterStyle.Display, "none");
            }
            //舱位
            IEnumerable <string> listBunks = null;

            //行程类型
            if (team.VoyageType == Common.Enums.VoyageType.OneWay)
            {
                ddlc.Visible = false;
                this.titlePolicy.InnerText = "单程";
                listBunks = QueryTeamBunks(team.Airline, team.DepartureDateStart, team.DepartureDateEnd, team.StartPrintDate, VoyageTypeValue.OneWay);
            }
            if (team.VoyageType == Common.Enums.VoyageType.RoundTrip)
            {
                ddlc.Visible               = false;
                paichutishi.InnerText      = "提示: 输入不适用本政策的始发和目的地,如:北京--济南行程不适用本政策,则输入PEKTNA,多个不适用航段用“ / ”隔开。";
                this.titlePolicy.InnerText = "往返";
                quchengFlight.InnerText    = "去程航班";
                huichengFlight.InnerText   = "回程航班";
                chkRound.Text              = "适用于往返降舱政策";
                listBunks = QueryTeamBunks(team.Airline, team.DepartureDateStart, team.DepartureDateEnd, team.StartPrintDate, VoyageTypeValue.RoundTrip);
            }
            //if (team.VoyageType == Common.Enums.VoyageType.OneWayOrRound)
            //{
            //    ddlc.Visible = false;
            //    paichutishi.InnerText = "提示: 输入不适用本政策的始发和目的地,如:北京--济南行程不适用本政策,则输入PEKTNA,多个不适用航段用“ / ”隔开。";
            //    this.titlePolicy.InnerText = "单程·往返";
            //    quchengFlight.InnerText = "去程航班";
            //    huichengFlight.InnerText = "回程航班";
            //    chkRound.Text = "适用于往返降舱政策";
            //    listBunks = QueryTeamBunks(team.Airline, team.DepartureDateStart, team.DepartureDateEnd, team.StartPrintDate, VoyageTypeValue.RoundTrip);
            //}
            if (team.VoyageType == Common.Enums.VoyageType.TransitWay)
            {
                paichutishi.InnerText      = "提示: 输入排除航线,多条航线之间用“ / ”隔开,(如:昆明到广州到杭州不适用,填写KMGCANHGH)";
                this.titlePolicy.InnerText = "中转联程";
                zhongzhuandi.InnerText     = "中转地";
                quchengFlight.InnerText    = "第一程航班";
                huichengFlight.InnerText   = "第二程航班";
                chkRound.Text        = "适用于联程降舱政策";
                duihuan.Visible      = false;
                zhongzhuanTh.Visible = true;
                listBunks            = QueryTeamBunks(team.Airline, team.DepartureDateStart, team.DepartureDateEnd, team.StartPrintDate, VoyageTypeValue.TransitWay);
            }
            //开始出票时间
            this.txtProvideDate.Text = team.StartPrintDate.ToString("yyyy-MM-dd");
            for (int i = 0; i < dropOffice.Items.Count; i++)
            {
                if (team.OfficeCode == dropOffice.Items[i].Text)
                {
                    dropOffice.Items[i].Selected = true;
                    break;
                }
            }
            //排除航线
            this.txtExceptAirways.Text          = team.ExceptAirways;
            this.chkAuto.Checked                = team.AutoAudit;
            this.chkChangePNR.Checked           = team.ChangePNR;
            this.chkRound.Checked               = team.SuitReduce;
            this.chkPrintBeforeTwoHours.Checked = team.PrintBeforeTwoHours;
            //出票条件
            this.txtDrawerCondition.Text = team.DrawerCondition;
            Bunks.InnerHtml = "";
            hidBunks.Value  = team.Berths;
            if (team.AppointBerths)
            {
                zhiding.Checked = true;
            }
            else
            {
                buzhiding.Checked = true;
                string[] bunks = team.Berths.Split(',');
                int      j     = 0;
                foreach (string item in listBunks)
                {
                    if (j % 4 == 0 && j > 0)
                    {
                        Bunks.InnerHtml += "<br />";
                    }
                    for (int i = 0; i < bunks.Count(); i++)
                    {
                        if (item == bunks[i])
                        {
                            Bunks.InnerHtml += " <input type='checkbox' value='" + bunks[i] + "' checked='checked' />" + bunks[i];
                            break;
                        }
                        if (i + 1 == bunks.Count())
                        {
                            Bunks.InnerHtml += " <input type='checkbox' value='" + item + "' />" + item;
                            break;
                        }
                    }
                    j++;
                }
            }

            //去程航班类型(不限,适用以下,不适用以下)
            if (team.DepartureFlightsFilterType == Common.Enums.LimitType.None)
            {
                radBuXian.Checked = true;
            }
            if (team.DepartureFlightsFilterType == Common.Enums.LimitType.Include)
            {
                radYiXia.Checked = true;
            }
            if (team.DepartureFlightsFilterType == Common.Enums.LimitType.Exclude)
            {
                radBuYiXia.Checked = true;
            }
            this.txtRemark.Text = team.Remark;
            foreach (var item in team.DepartureWeekFilter.Split(','))
            {
                switch (item)
                {
                case "1":
                    mon.Checked = true;
                    break;

                case "2":
                    tue.Checked = true;
                    break;

                case "3":
                    wed.Checked = true;
                    break;

                case "4":
                    thur.Checked = true;
                    break;

                case "5":
                    fri.Checked = true;
                    break;

                case "6":
                    sat.Checked = true;
                    break;

                case "7":
                    sun.Checked = true;
                    break;
                }
            }
            this.txtPaiChu.Text = team.DepartureDateFilter;
            this.txtSubordinateCommission.Text = team.SubordinateCommission == -1 ? "" : (team.SubordinateCommission * 100).TrimInvaidZero();
            this.txtProfessionCommission.Text  = team.ProfessionCommission == -1 ? "" : (team.ProfessionCommission * 100).TrimInvaidZero();
            this.txtInternalCommission.Text    = team.InternalCommission == -1 ? "" : (team.InternalCommission * 100).TrimInvaidZero();

            ddlCustomCode.SelectedValue = team.CustomCode.Trim();
            lblCustomerCode.Text        = team.CustomCode.Trim();
            txtDepartureAirports.InitData(true, team.Departure.Split('/').ToList());
            if (team.VoyageType == VoyageType.TransitWay)
            {
                txtArrivalAirports.InitData(true, team.Transit == null ? null : team.Transit.Split('/').ToList());
                txtZhongzhuanAirports.InitData(true, team.Arrival.Split('/').ToList());
            }
            else
            {
                txtArrivalAirports.InitData(true, team.Arrival.Split('/').ToList());
            }
            chkddlc.Checked = team.MultiSuitReduce;
            if (team.TicketType == TicketType.BSP)
            {
                chkPrintBeforeTwoHours.Visible = false;
            }
        }