public string AllUsersInfo()
        {
            var channel      = RemoteProcedureCallClass.GetUserChannel();
            var allUsersJson = channel.GetAllUsersInfo();

            return(allUsersJson);
        }
        public string Login(LoginModel loginModel)
        {
            SetSessionVariable("UserId", "");
            SetSessionVariable("CoreId", "");

            if (loginModel != null)
            {
                if (ModelState.IsValid)
                {
                    if (RemoteProcedureCallClass
                        .GetUserChannel()
                        .IsRegisteredUser(loginModel.Nickname, loginModel.PasswordHash))
                    {
                        FormsAuthentication.SetAuthCookie(loginModel.Nickname, true);
                        return(true.ToJson());
                    }
                    else
                    {
                        ModelState.AddModelError("", "error: user is not registered!");
                        return("");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "error: model not valid!");
                    return("");
                }
            }
            return("");
        }
        public StatInfo[] GetAllStats()
        {
            var resultJson = RemoteProcedureCallClass.GetGameChannel().GetAllStats();
            var result     = resultJson.FromJson <StatInfo[]>();

            return(result);
        }
        public int IsEventStackUpdated()
        {
            int userId;
            var userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                var isEventStackUpdated = RemoteProcedureCallClass.GetBaseChannel().IsEventStackUpdated(userId);
                return(isEventStackUpdated);
            }
            return(-1);
        }
        public DialogButtonInfo[] GetDialogButtonInfo()
        {
            int userId;
            var userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                var resultJson = RemoteProcedureCallClass.GetBaseChannel().GetDialogButtonInfo(userId);
                var result     = resultJson.FromJson <DialogButtonInfo[]>();
                return(result);
            }
            return(new DialogButtonInfo[0]);
        }
        public Renderable[] GetOtherRenderable()
        {
            int coreid;
            var coreIdString = GetSessionVariable("CoreId");

            if (System.Int32.TryParse(coreIdString, out coreid))
            {
                var result = RemoteProcedureCallClass
                             .GetGameChannel()
                             .GetOtherRenderable(coreid).FromJson <Renderable[]>();
                return(result);
            }
            return(new Renderable[0]);
        }
        public string GetCoreById()
        {
            int coreid;
            var coreIdString = GetSessionVariable("CoreId");

            if (System.Int32.TryParse(coreIdString, out coreid))
            {
                var result = RemoteProcedureCallClass
                             .GetGameChannel()
                             .GetCoreById(coreid);
                return(result);
            }
            return("");
        }
        public CoreInfo GetCoreInfoById([FromBody] int id)
        {
            //int coreid;
            //var coreIdString = GetSessionVariable("CoreId");
            //if (System.Int32.TryParse(coreIdString, out coreid))
            //{
            string coreInfoJson = RemoteProcedureCallClass
                                  .GetGameChannel()
                                  .GetCoreInfoById(id);
            CoreInfo coreInfo = coreInfoJson.FromJson <CoreInfo>();

            return(coreInfo);
            //}
            //return new CoreInfo();
        }
        public string UsersFollowingsInfo()
        {
            int    userId;
            string userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                var channel             = RemoteProcedureCallClass.GetUserChannel();
                var followingsUsersJson = channel.GetUsersFollowingsInfo(userId);
                return(followingsUsersJson);
            }
            else
            {
                return("");
            }
        }
        public EventType[] GetAllEvents()
        {
            int userId;
            var userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                var resultJson = RemoteProcedureCallClass
                                 .GetBaseChannel()
                                 .GetAllEvents(userId);
                EventType[] result =
                    resultJson?.FromJson <EventType[]>();
                return(result);
            }
            return(new EventType[0]);
        }
        public string GetAllUserCommunicationEvents()
        {
            int    userId;
            string userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                string result = RemoteProcedureCallClass
                                .GetBaseChannel()
                                .GetAllUserCommunicationEvents(userId);
                return(result);
            }
            else
            {
                return("");
            }
        }
        public string UpdateLogData()
        {
            int    userId;
            string userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                string result = RemoteProcedureCallClass
                                .GetBaseChannel()
                                .UpdateLogData(userId);
                return(result);
            }
            else
            {
                return("");
            }
        }
        public int IsLogUpdated()
        {
            int    userId;
            string userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                bool result = RemoteProcedureCallClass
                              .GetBaseChannel()
                              .IsLogUpdated(userId);
                return(result ? 1 : 0);
            }
            else
            {
                return(-1);
            }
        }
        public MessageInfo[] GetDialogForUser([FromBody] int companionId)
        {
            int    userId;
            string userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                var resultJson = RemoteProcedureCallClass
                                 .GetBaseChannel()
                                 .GetDialogForUser(new DialogId()
                {
                    UserId = userId, CompanionId = companionId
                });
                var result = resultJson.FromJson <MessageInfo[]>();
                return(result);
            }
            return(new MessageInfo[0]);
        }
        public int DuelBattle([FromBody] object defenderCoreId)
        {
            int coreid;
            var coreIdString = GetSessionVariable("CoreId");

            if (System.Int32.TryParse(coreIdString, out coreid))
            {
                int defenderCoreIdInt;
                if (System.Int32.TryParse(defenderCoreId.ToString(), out defenderCoreIdInt))
                {
                    var resultJson = RemoteProcedureCallClass
                                     .GetGameChannel()
                                     .DuelBattle(coreid, defenderCoreIdInt);
                    var result = resultJson.FromJson <BattleResponse>().WhoWonTheBattle;
                    return(result);
                }
            }
            return(-2);
        }
        public void SendMessage(SendMessageStruct toSend)
        {
            int userId;
            var userIdString = GetSessionVariable("UserId");

            if (System.Int32.TryParse(userIdString, out userId))
            {
                RemoteProcedureCallClass.GetBaseChannel()
                .SendMessage(
                    new MessageToAdd()
                {
                    UserId      = userId,
                    CompanionId = toSend.CompanionId,
                    Message     = new Message()
                    {
                        Content = toSend.Message, Time = System.DateTime.Now
                    }
                });
            }
        }
        public string CoreBattle([FromBody] int defenderCoreId)
        {
            int coreid;
            var coreIdString = GetSessionVariable("CoreId");

            if (System.Int32.TryParse(coreIdString, out coreid))
            {
                //critical bug
                try
                {
                    var result = RemoteProcedureCallClass
                                 .GetGameChannel()
                                 .CoreBattle(coreid, defenderCoreId)
                                 .ToJson();
                    return(result);
                }
                catch
                {
                }
            }
            return("");
        }
        public string Registration(RegistrationModel model)
        {
            SetSessionVariable("UserId", "");
            SetSessionVariable("CoreId", "");

            if (model != null)
            {
                if (ModelState.IsValid)
                {
                    if (!RemoteProcedureCallClass
                        .GetUserChannel()
                        .IsRegisteredUser(model.Nickname, model.PasswordHash))
                    {
                        if (RemoteProcedureCallClass
                            .GetUserChannel()
                            .RegisterUserToTable(model.FirstName,
                                                 model.SecondName, model.PasswordHash,
                                                 model.Nickname, model.Email))
                        {
                            FormsAuthentication.SetAuthCookie(model.Nickname, true);
                            return(model.ToJson());
                        }
                        return("");
                    }
                    else
                    {
                        return("");
                    }
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
        public string GetAccountData()
        {
            int userId = RemoteProcedureCallClass.GetUserChannel()
                         .GetUserIdByNickname(User.Identity.Name);

            var core = RemoteProcedureCallClass.GetGameChannel()
                       .GetCoreByUserId(userId).FromJson <SessionCoresTable>();

            SetSessionVariable("UserId", userId.ToString());
            if (core != null)
            {
                if (core.SessionCoreId != 0)
                {
                    SetSessionVariable("CoreId", core.SessionCoreId.ToString());
                }
            }

            AccountData result = new AccountData();

            result.UserId   = userId;
            result.CoreId   = (core != null) ? core.SessionCoreId : 0;
            result.Nickname = User.Identity.Name;
            return(result.ToJson());
        }
 public int CasernGetNumberOfWarriors([FromBody] int coreId)
 {
     return(RemoteProcedureCallClass
            .GetGameChannel()
            .CasernGetNumberOfWarriors(coreId));
 }
 public void CoreBuildDefenceTower([FromBody] int coreId)
 {
     RemoteProcedureCallClass
     .GetGameChannel()
     .CoreBuildDefenceTower(coreId);
 }
 public void CoreBuildCasern([FromBody] int coreId)
 {
     RemoteProcedureCallClass
     .GetGameChannel()
     .CoreBuildCasern(coreId);
 }
 public int CasernGetNumberOfAttackAircraft([FromBody] int coreId)
 {
     return(RemoteProcedureCallClass
            .GetGameChannel()
            .CasernGetNumberOfAttackAircraft(coreId));
 }
 public void BaseProduceWorker([FromBody] int coreId)
 {
     RemoteProcedureCallClass
     .GetGameChannel()
     .BaseProduceWorker(coreId);
 }
 public void CoreBuildGoldMining([FromBody] int coreId)
 {
     RemoteProcedureCallClass
     .GetGameChannel()
     .CoreBuildGoldMining(coreId);
 }
 public void CasernProduceWarrior([FromBody] int coreId)
 {
     RemoteProcedureCallClass
     .GetGameChannel()
     .CasernProduceWarrior(coreId);
 }
 public void CasernProduceAttackAircraft([FromBody] int coreId)
 {
     RemoteProcedureCallClass
     .GetGameChannel()
     .CasernProduceAttackAircraft(coreId);
 }
 public void RemoveUserFromFriends(TwoUsers users)
 {
     RemoteProcedureCallClass
     .GetUserChannel()
     .RemoveUserFromFriends(users.ToJson());
 }
 public void AddUserToFriends(TwoUsers users)
 {
     RemoteProcedureCallClass
     .GetUserChannel()
     .AddUserToFriends(users.ToJson());
 }
 public void GoldMiningAddWorker([FromBody] int coreId)
 {
     RemoteProcedureCallClass
     .GetGameChannel()
     .GoldMiningAddWorker(coreId);
 }