Esempio n. 1
0
        public IList <TabReportOut> GetReportItems(IDbConnection connection, int currentUserId, int lastReportId)
        {
            var collection = _getReportItemsList(connection, currentUserId, lastReportId);

            TabReportOut.InitComplexBtnCollection(collection);
            return(collection);
        }
Esempio n. 2
0
        public IPlanshetViewData InitialPlanshet(IDbConnection connection, int currentUserId, List <int> userPlanetIds = null)
        {
            if (userPlanetIds == null)
            {
                var up = _gDetailPlanetService.GetUserPlanets(connection, currentUserId);
                userPlanetIds = up.Select(i => i.Id).ToList();
            }

            #region Task

            var taskTab = new TabTaskOut {
                MotherJump = _motherJumpService.GetJumpTaskModel(connection, currentUserId),
                Collection = _uTaskService.GetActiveTask(connection, currentUserId, SetTaskItem, userPlanetIds)
            };


            taskTab.TaskButtons();
            TabTaskOut.InitComplexBtnCollection(taskTab.Collection);

            #endregion

            #region Report

            var reportTab = new TabReportOut {
                Collection = _getReportItemsList(connection, currentUserId),
                TotalItems = _uReportService.GetTotalUserReports(connection, currentUserId),
            };
            TabReportOut.InitComplexBtnCollection(reportTab.Collection);

            #endregion

            #region Spy

            var spyCollection = _getSpyItemsList(connection, currentUserId);
            var spyTab        = new TabSpyOut {
                Collection = spyCollection,
                TotalItems = _uSpyService.GetTotalUserSpyReports(connection, currentUserId),
                Buttons    = new List <IButtonsView> {
                    ButtonsView.NewSpyItemFromSerch()
                }
            };
            TabSpyOut.InitComplexBtnCollection(spyTab.Collection);

            #endregion

            return(JournalOut.InitialTabs(taskTab, reportTab, spyTab, _localizer));
        }
Esempio n. 3
0
        public TabReportOut GetReportItemByTaskId(IDbConnection connection, int currentUserId, int taskId)
        {
            var userId     = currentUserId;
            var task       = _uTaskService.GetByTaskId(connection, taskId, true);
            var reportItem = _uReportService.GetUserReportByTaskId(connection, userId, taskId, i => i);
            var reportInfo = SetReportItem(userId, new List <UserTaskDataModel> {
                task
            })(reportItem);

            if (reportItem == null)
            {
                throw new Exception(Error.NoData);
            }
            TabReportOut.InitComplexBtnItem(reportInfo);

            return(reportInfo);
        }
Esempio n. 4
0
        public Func <UserReportDataModel, TabReportOut> SetReportItem(int userId, List <UserTaskDataModel> tasks)
        {
            return(i => {
                var doneTask = tasks.Single(t => t.Id == i.TaskId);
                if (doneTask == null)
                {
                    throw new NullReferenceException(Error.NoData);
                }
                var jumpToPlanetoid = ImageView.Img(_spriteImages.MapControlIcons("jumptoplanetoid").Icon,
                                                    doneTask.TargetPlanetName, false, doneTask.TargetPlanetName);
                var isLose = !(i.AtackerWin && userId == i.AtackerUserId || !i.AtackerWin && userId == i.DefenderUserId);
                var report = new TabReportOut {
                    Id = i.Id,
                    CurrentUserIsAtacker = i.AtackerUserId == userId,
                    SourceUserName = i.AtackerUserName,
                    SourceReportHangar = ReportFleetOut.ConvertBattleFleetsToReportFleetView(i.AtackerSummaryReport),
                    TargetUserName = i.DefenderUserName,
                    TargetReportHangar = ReportFleetOut.ConvertBattleFleetsToReportFleetView(i.DefenderSummaryReport),

                    AtackerIsSkagry = i.AtackerIsSkagry,


                    TargetPlanetId = doneTask.TargetPlanetId,
                    TargetPlanetName = doneTask.TargetPlanetName,
                    TargetSystemName = doneTask.TargetPlanetName.Substring(0, 5),
                    Date = UnixTime.GetDateFromTimeStamp(i.BattleTime),
                    TimeNow = UnixTime.GetTimeFromTimeStamp(i.BattleTime),
                    TargetResource = i.Resources.ConvertToInt(),
                    //todo  временно назначен

                    LeftImage = doneTask.SourceOwnType
                        ? jumpToPlanetoid
                        : ImageView.Img(_spriteImages.MapControlIcons("jumptomother").Icon, null, false, null),
                    RightImage = jumpToPlanetoid,
                    // RightImage = ImageView.Img("r-RightImage"),
                    //todo  сделать аву для скагрей
                    IsLose = isLose
                };
                return report;
            });
        }
Esempio n. 5
0
        // todo  не работает
        public TabReportOut CreateReportItem(IDbConnection connection, string id)
        {
            throw new NotImplementedException("ReportItem(string id) метод не работает проверить место вызова");
            var random       = new Random();
            var randPlanetId = random.Next(300, 500);
            var tmpSorce     = false;

            var tPlanet    = _gDetailPlanetService.GetPlanet(connection, randPlanetId, i => i);
            var systemName = _geometryPlanetService.GetPlanetSystemName(connection, randPlanetId);

            var tUser = _gameUserService.GetGameUser(connection, tPlanet.UserId);

            var j = new TabReportOut {
                Id               = 300,
                TargetUserName   = tUser.Nickname,
                TargetSystemName = systemName,
                TargetPlanetName = tPlanet.Name,
                TargetResource   = tPlanet.Resources.Current.ConvertToInt(),
                SourceOwnType    = false,
                SourceUserName   = "", //get user

                //TargetHangar = HangarUnitsOut.EmptyHangar(),
                //todo  временно назначен
                LeftImage =
                    (!tmpSorce)
                        ? ImageView.Img(_spriteImages.MapControlIcons("jumptomother").Icon)
                        : ImageView.Img(_spriteImages.MapControlIcons("jumptoplanetoid").Icon),
                RightImage = ImageView.Img(_spriteImages.MapControlIcons("jumptoplanetoid").Icon),
                // RightImage = ImageView.Img("r-RightImage"),

                Date    = UnixTime.GetDateFromTimeStamp(DateTime.UtcNow),
                TimeNow = UnixTime.GetTimeFromTimeStamp(DateTime.UtcNow)
            };

            if (tmpSorce)
            {
            }
            return(j);
        }
Esempio n. 6
0
        public void NotyfyTaskFinished(UserTaskDataModel finishedTask, UserReportDataModel report = null, int?newTotalWinnerUserCc = null)
        {
            IDbConnection connection = null; // коннекшен для этого метода не нужен, это часть интерфейса

            if (!finishedTask.TaskEnd)
            {
                throw new NotImplementedException("NotyfyTaskFinished: finishedTask.TaskEnd = false");
            }
            IList <ConnectionUser> hubUsers;

            if (finishedTask.IsTransfer)
            {
                hubUsers = _hubCache.LocalFind(connection, (key, val) => val.UserId == finishedTask.SourceUserId);
                if (hubUsers == null || hubUsers.Count != 1 || !hubUsers[0].Connected)
                {
                    return;
                }
                _hub.Clients.Client(hubUsers[0].ConnectionId).InvokeAsync("journalOnTaskFinished", new
                {
                    Task         = finishedTask,
                    TabReportOut = 0
                });
                return;
            }
            if (report == null)
            {
                return;
            }

            hubUsers = _hubCache.LocalFind(connection, (key, val) =>
                                           val.UserId == report.AtackerUserId || val.UserId == report.DefenderUserId);
            if (hubUsers == null || hubUsers.All(i => !i.Connected))
            {
                return;
            }
            var            atakerUsers   = hubUsers.Where(i => i.UserId == report.AtackerUserId).ToList();
            var            defendorUsers = hubUsers.Where(i => i.UserId == report.DefenderUserId).ToList();
            ConnectionUser ataker        = null;
            ConnectionUser defendor      = null;

            if (atakerUsers.Any() && atakerUsers.Count == 1 && atakerUsers[0].Connected)
            {
                ataker = atakerUsers[0];
            }
            if (defendorUsers.Any() && defendorUsers.Count == 1 && defendorUsers[0].Connected)
            {
                defendor = defendorUsers[0];
            }


            if (ataker != null)
            {
                var client = _hub.Clients.Client(ataker.ConnectionId);
                if (client != null)
                {
                    L10N.SetCulture(ataker.Lang);
                    var atakerReport =
                        _journalOut.SetReportItem(report.AtackerUserId, new List <UserTaskDataModel> {
                        finishedTask
                    })(
                            report.CloneDeep());
                    TabReportOut.InitComplexBtnItem(atakerReport);
                    client.InvokeAsync("journalOnTaskFinished", new
                    {
                        Task                 = finishedTask,
                        TabReportOut         = atakerReport,
                        NewTotalWinnerUserCc = newTotalWinnerUserCc != null && !atakerReport.IsLose
                            ? newTotalWinnerUserCc
                            : null
                    });
                }
            }
            if (defendor != null)
            {
                var client = _hub.Clients.Client(defendor.ConnectionId);
                if (client != null)
                {
                    L10N.SetCulture(defendor.Lang);
                    var defendorReport = _journalOut.SetReportItem(report.DefenderUserId,
                                                                   new List <UserTaskDataModel> {
                        finishedTask
                    })(report.CloneDeep());
                    TabReportOut.InitComplexBtnItem(defendorReport);

                    client.InvokeAsync("journalOnTaskFinished", new
                    {
                        Task                 = finishedTask,
                        TabReportOut         = defendorReport,
                        NewTotalWinnerUserCc = newTotalWinnerUserCc != null && !defendorReport.IsLose
                            ? newTotalWinnerUserCc
                            : null
                    });
                }
            }
        }