Ejemplo n.º 1
0
        public IActionResult GetAll([FromQuery] UnitQueryFilter filters)
        {
            var units    = _unitService.GetUnits(filters);
            var unitsDto = _mapper.Map <IEnumerable <UnitsHubDto> >(units);

            var metadata = new Metadata
            {
                TotalCount      = units.TotalCount,
                PageSize        = units.PageSize,
                CurrentPage     = units.CurrentPage,
                TotalPages      = units.TotalPages,
                HasNextPage     = units.HasNextPage,
                HasPreviousPage = units.HasPreviousPage,
                NextPageUrl     = _uriService.GetPaginationUri(Url.RouteUrl(nameof(GetAll))).ToString(),
                PreviousPageUrl = _uriService.GetPaginationUri(Url.RouteUrl(nameof(GetAll))).ToString()
            };

            var response = new ApiResponse <IEnumerable <UnitsHubDto> >(unitsDto)
            {
                Meta = metadata
            };

            return(Ok(response));
        }
Ejemplo n.º 2
0
        public PagedList <Unit> GetUnits(UnitQueryFilter filters)
        {
            filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber;
            filters.PageSize   = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize;

            var units = _unitOfWork.UnitRepository.GetAll().ToList();

            if (!String.IsNullOrEmpty(filters.Name))
            {
                units = units.Where(x => x.Name.ToLower().Contains(filters.Name.ToLower())).ToList();
            }

            if (filters.OrganizationId.HasValue)
            {
                units = units.Where(x => x.Facility.OrganizationId == filters.OrganizationId.Value).ToList();
            }

            if (filters.FacilityId.HasValue)
            {
                units = units.Where(x => x.FacilityId == filters.FacilityId).ToList();
            }

            if (filters.SuinNumber.HasValue)
            {
                units = units.Where(x => x.Suin == filters.SuinNumber.Value).ToList();
            }

            if (filters.Health.HasValue)
            {
                units = units.Where(x => x.SystemStatus.OrderByDescending(y => y.Date).FirstOrDefault().Health == filters.Health.Value).ToList();
            }

            var pagedUnits = PagedList <Unit> .Create(units, filters.PageNumber, filters.PageSize);

            return(pagedUnits);
        }
Ejemplo n.º 3
0
        //艦娘タブの初期化
        public void Init()
        {
            if (!(this.FindForm() as WeifenLuo.WinFormsUI.Docking.DockContent).IsHandleCreated)
            {
                return;
            }

            //変数の設定
            label_unit_num = new Label[]
            {
                label_unit_num_1, label_unit_num_2, label_unit_num_3
            };
            label_unit_time = new Label[]
            {
                label_unit_time_1, label_unit_time_2, label_unit_time_3, label_unit_time_4
            };
            //メニューアイテムの作成
            MenuItemQuery = new ToolStripMenuItem[8][];
            foreach (int i in Enumerable.Range(0, MenuItemQuery.Length)) MenuItemQuery[i] = new ToolStripMenuItem[KancolleInfoUnitList.QueriesMax / MenuItemQuery.Length];
            foreach(int i in Enumerable.Range(0, KancolleInfoUnitList.QueriesMax))
            {
                ToolStripMenuItem item = new ToolStripMenuItem()
                {
                    Text = string.Format("({0})", i), Tag = i,
                };
                MenuItemQuery[i / MenuItemQuery[0].Length][i % MenuItemQuery[0].Length] = item;
            }
            toolStripMenuItem_q1.DropDownItems.AddRange(MenuItemQuery[0]); toolStripMenuItem_q2.DropDownItems.AddRange(MenuItemQuery[1]);
            toolStripMenuItem_q3.DropDownItems.AddRange(MenuItemQuery[2]); toolStripMenuItem_q4.DropDownItems.AddRange(MenuItemQuery[3]);
            toolStripMenuItem_q5.DropDownItems.AddRange(MenuItemQuery[4]); toolStripMenuItem_q6.DropDownItems.AddRange(MenuItemQuery[5]);
            toolStripMenuItem_q7.DropDownItems.AddRange(MenuItemQuery[6]); toolStripMenuItem_q8.DropDownItems.AddRange(MenuItemQuery[7]);
            //自動更新
            toolStripMenuItem_autorefresh.Click += new EventHandler(toolStripMenuItem_autorefresh_Click);
            if(!Config.TabKanmusuAutoRefreshDisable) toolStripMenuItem_autorefresh.PerformClick();
            //クエリの初期化
            UsingQuery = new UnitQuery();
            //フィルターの初期化
            UsingFilter = new UnitQueryFilter();

            InitFinished = true;
        }
Ejemplo n.º 4
0
 //フィルタリング(入渠時間計算用)
 private static bool Filtering(ApiShip oship, UnitQueryFilter filter)
 {
     //入渠時間が一定以上か
     bool ndock_timeover = filter.NotShowOverThresholdHour &&
         TimeSpan.FromMilliseconds(oship.api_ndock_time).TotalHours >= filter.ThresholdHour;
     //小破以上か
     var hpcond = oship.GetHPCondition(false, false, Config.BucketHPRatio, APIGetMember.SlotItemsDictionary) & ~HPCondition.EraseFlagsMagicNumber;
     bool small_damage = filter.NotShowSmallDamage && ((int)hpcond <= (int)HPCondition.SmallDamage);
     return (!ndock_timeover) && (!small_damage);
 }
Ejemplo n.º 5
0
 //
 public static void RefreshRepairTime(System.Windows.Forms.Label[] label_num,
     System.Windows.Forms.Label[] label_repair, IEnumerable<ApiShip> queried, UnitQueryFilter filter)
 {
     if (queried == null || queried.Count() == 0) return;
     //入渠時間の計算
     //クエリのさらなる絞り込み
     var query_ndock = from s in queried
                       where Filtering(s, filter)
                       select s;
     //入渠時間の合計
     long sum_bath = 0;
     foreach (ApiShip s in query_ndock) sum_bath += s.api_ndock_time;
     //出力アイテム
     TimeSpan[] result = new TimeSpan[4];
     result[0] = TimeSpan.FromMilliseconds(sum_bath);
     result[1] = TimeSpan.FromMilliseconds(sum_bath / 2);
     result[2] = TimeSpan.FromMilliseconds(sum_bath / 3);
     result[3] = TimeSpan.FromMilliseconds(sum_bath / 4);
     //入渠時間のセット
     for (int i = 0; i < result.Length; i++)
     {
         CallBacks.SetLabelText(label_repair[i], TimeSpanToString(result[i]));
     }
 }
Ejemplo n.º 6
0
        //実行
        public static void DoIt(System.Windows.Forms.Label[] label_num,
            System.Windows.Forms.Label[] label_repair, System.Windows.Forms.ListView listview, 
            IEnumerable<ApiShip> queried, UnitQueryFilter filter)
        {
            //メインかどうかのフラグ
            bool mainflag = label_num != null && label_repair != null;
            if (APIPort.ShipsDictionary == null || (!mainflag && queried == null)) return;
            //艦隊配置のID
            var fleetassignships = from d in APIPort.DeckPorts
                                   from s in d.api_ship
                                   where s != -1
                                   select s;
            //リストビューのアイテムの取得
            int n = queried.Count();
            string[][] item_str = new string[n][];
            int cnt = 0;
            foreach(var s in queried)
            {
                bool assign_flag;
                if (filter.NotShowStar) assign_flag = false;
                else assign_flag = Enumerable.Contains(fleetassignships, s.api_id);
                item_str[cnt] = ToListViewItem(s, assign_flag);
                cnt++;
            }
            //リストビューのアイテムの更新
            SetListViewItems(listview, item_str, queried);
            //ラベルがNULLの場合はここで終わり
            if (!mainflag) return;
            //キラキラの艦数
            var query_cond = from s in queried
                             where s.api_cond >= 50
                             select s;
            CallBacks.SetLabelText(label_num[0], query_cond.Count().ToString());
            //中破以上の艦数
            var conditions = queried.Select(x => x.GetHPCondition(false, false, Config.BucketHPRatio, APIGetMember.SlotItemsDictionary) & ~HPCondition.EraseFlagsMagicNumber);
            var query_middleover = conditions.Where(x => (x == HPCondition.HeavyDamage || x == HPCondition.MiddleDamage));
            CallBacks.SetLabelText(label_num[1], query_middleover.Count().ToString());
            //小破の艦数
            var query_small = conditions.Where(x => x == HPCondition.SmallDamage);
            CallBacks.SetLabelText(label_num[2], query_small.Count().ToString());
            //件数

            //入渠時間の計算
            RefreshRepairTime(label_num, label_repair, queried, filter);
        }