Beispiel #1
0
        public async Task <IActionResult> Index()
        {
            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }
            string      uri             = $"{baseuri}/chats/userId/{userId}";
            List <Chat> chatListForUser = await WebApiHelper.GetApiResult <List <Chat> >(uri);

            UserSimpleDTO currentUser = await GetUserWithId(userId);

            var allUsers = await FilterUserList(userId);

            ChatIndexVM vm = new ChatIndexVM
            {
                User     = currentUser,
                AllUsers = new SelectList(allUsers, "Id", "UserName")
            };

            //HttpContext.Session.SetString("chatId", "9bc5f401-9684-48a9-2ffe-08d6bd9fc1a1");
            //return new RedirectToActionResult("OpenExistingChat", "Chat", null);
            return(View(vm));
        }
        public async Task <IActionResult> Index()
        {
            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }

            UserSimpleDTO user = await GetUserWithId(userId);

            var vm = new PokedexIndexVM
            {
                Username = user.UserName,
                BaseUri  = baseuriClient
            };

            string         uri        = $"{baseuri}/Pokemons/GetAll";
            List <Pokemon> allPokemon = await WebApiHelper.GetApiResult <List <Pokemon> >(uri);

            vm.AllPokemonWithTypeInfo = allPokemon;

            uri = $"{baseuri}/PokemonCatches/GetMyPokemon/{user.Id}";
            List <PokemonCatch> allCaughtPokemon = await WebApiHelper.GetApiResult <List <PokemonCatch> >(uri);

            vm.AllCaughtPokemon = allCaughtPokemon;

            return(View(vm));
        }
Beispiel #3
0
        public async Task <IActionResult> SendFirstMessage()
        {
            Guid senderId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                senderId = (Guid)tempUserId;
            }

            UserSimpleDTO sender = await GetUserWithId(senderId);

            Guid          receiverId = Guid.Parse(HttpContext.Session.GetString("ReceiverId"));
            UserSimpleDTO receiver   = await GetUserWithId(receiverId);

            ChatSendFirstMessageVM vm = new ChatSendFirstMessageVM()
            {
                Receiver = receiver,
                Sender   = sender
            };

            return(View(vm));
        }
Beispiel #4
0
        public async Task <IActionResult> GeneratePokemon()
        {
            PokemonCatch       appearedPokemon;
            Pokemon            template;
            PokemonSessionData pokemonData;
            string             serializedPokemon;

            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }

            UserSimpleDTO user = await GetUserWithId(userId);

            serializedPokemon = HttpContext.Session.GetString("PokemonData");
            if (PokemonErrorCheck(serializedPokemon))
            {
                return(new RedirectToActionResult("Walkaround", "Explore", null));
            }

            pokemonData = JsonConvert.DeserializeObject <PokemonSessionData>(serializedPokemon);

            string uri     = $"{baseuri}/Types/TypeName/{pokemonData.Type}";
            var    getType = await WebApiHelper.GetApiResult <Type>(uri);

            if (pokemonData.Name == null)//er is nog geen pokemon gegenereerd. Is dit wel zo zal de bovenstaande terug getoond worden
            {
                appearedPokemon = await LetPokemonAppear(getType, user.Id);
            }
            else
            {
                appearedPokemon = GetPokemonCatchObject(pokemonData.Id, userId, pokemonData.HP, pokemonData.CP,
                                                        pokemonData.Height, pokemonData.Weight, pokemonData.Gender,
                                                        pokemonData.IsShiny, pokemonData.IsAlolan, pokemonData.MoveCatches);
            }

            uri      = $"{baseuri}/Pokemons/GetById/{appearedPokemon.PokemonId}";
            template = await WebApiHelper.GetApiResult <Pokemon>(uri);

            appearedPokemon.Pokemon = template;
            ExploreCatchVm vm = new ExploreCatchVm();

            vm.AppearedPokemon = appearedPokemon;
            vm.CheatingWarning = pokemonData.CheatingWarning;
            vm.UserName        = user.UserName;
            vm.BaseUri         = baseuriClient;
            vm.FolderType      = GeneralFunctions.EvaluateFolderType(appearedPokemon.IsShiny, appearedPokemon.IsAlolan);//FolderType is ook property van PokemonCatch
            return(View(vm));
        }
        public List <UserSimpleDTO> GetRemainingUsersSimple(Guid chatId)
        {
            var allUsers = PokebookContext.Users.ProjectTo <UserSimpleDTO>(mapper.ConfigurationProvider).ToList();
            var userList = GetChatUsers(chatId);

            foreach (var user in userList)
            {
                UserSimpleDTO toRemove = allUsers.Where(a => a.UserName == user.UserName).FirstOrDefault();
                allUsers.Remove(toRemove);
            }
            return(allUsers);
        }
        public async Task <List <UserSimpleDTO> > GetChatUsersSimple(Guid chatId)
        {
            var userList     = new List <UserSimpleDTO>();
            var allUserChats = PokebookContext.UserChats.Include(uc => uc.User).Where(uc => uc.ChatId == chatId).ToList();

            foreach (var uc in allUserChats)
            {
                UserSimpleDTO userToAddDTO = await GetUserSimple(uc.User.Id);

                userList.Add(userToAddDTO);
            }
            return(userList);
        }
Beispiel #7
0
        public async Task <IActionResult> Gotcha()
        {
            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }

            UserSimpleDTO user = await GetUserWithId(userId);

            string serializedPokemon = HttpContext.Session.GetString("PokemonData");

            if (PokemonErrorCheck(serializedPokemon))
            {
                return(new RedirectToActionResult("Walkaround", "Explore", null));
            }
            var pokemonData = JsonConvert.DeserializeObject <PokemonSessionData>(serializedPokemon);

            if (!pokemonData.Caught)
            {/*de bool is niet op true gezet in CatchProcesser. De user heeft dus gecheat*/
                pokemonData.CheatingWarning = "Professor Oak can't allow cheating!";
                string serializedPokemonData = JsonConvert.SerializeObject(pokemonData);
                HttpContext.Session.SetString("PokemonData", serializedPokemonData);
                return(new RedirectToActionResult("GeneratePokemon", "Explore", null));
            }

            string  uri      = $"{baseuri}/Pokemons/GetById/{pokemonData.Id}";
            Pokemon template = await WebApiHelper.GetApiResult <Pokemon>(uri);

            PokemonCatch appearedPokemon = GetPokemonCatchObject(pokemonData.Id, userId, pokemonData.HP, pokemonData.CP,
                                                                 pokemonData.Height, pokemonData.Weight, pokemonData.Gender,
                                                                 pokemonData.IsShiny, pokemonData.IsAlolan, pokemonData.MoveCatches);

            appearedPokemon.Pokemon = template;

            ExploreCatchVm vm = new ExploreCatchVm();

            vm.AppearedPokemon = appearedPokemon;
            vm.UserName        = user.UserName;
            vm.BaseUri         = baseuriClient;
            vm.FolderType      = GeneralFunctions.EvaluateFolderType(appearedPokemon.IsShiny, appearedPokemon.IsAlolan);
            HttpContext.Session.Remove("PokemonData"); //om minder geheugen in te nemen op de server.
                                                       //Ook om een Redirect te forceren bij terugkeer naar de vorige pagina
            return(View(vm));
        }
        public async Task <IActionResult> Pokemon(short ndex)
        {
            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }

            UserSimpleDTO user = await GetUserWithId(userId);

            string  uri      = $"{baseuri}/Pokemons/GetByNdex/{ndex}";
            Pokemon thisPoke = await WebApiHelper.GetApiResult <Pokemon>(uri);

            uri = $"{baseuri}/PokemonUsers/GetById/{thisPoke.Id}/{user.Id}";
            PokemonUser pokemonUser = await WebApiHelper.GetApiResult <PokemonUser>(uri);

            short numberOfCatches = 0;

            if (pokemonUser != null)
            {
                numberOfCatches = pokemonUser.Catches;
            }

            StringBuilder sb     = new StringBuilder();
            var           colors = new string[2];

            colors[0] = thisPoke.PokemonTypes.FirstOrDefault().Type.Colour;
            colors[1] = (thisPoke.PokemonTypes.Count < 2) ? colors[0] : thisPoke.PokemonTypes.ElementAtOrDefault(1).Type.Colour;
            foreach (var t in thisPoke.PokemonTypes)
            {
                sb.Append($"{t.Type.Name} ");
            }

            PokedexPokemonVM vm = new PokedexPokemonVM
            {
                SelectedPokemon = thisPoke,
                Catches         = numberOfCatches,
                Colors          = colors,
                Sb      = sb,
                BaseUri = baseuriClient
            };

            return(View(vm));
        }
Beispiel #9
0
        public async Task <IActionResult> OpenExistingChat(Guid chatId)//is 000... na Redirect om de een of andere reden
        {
            Guid myId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                myId = (Guid)tempUserId;
            }

            if (chatId.ToString() == "00000000-0000-0000-0000-000000000000")
            {
                chatId = Guid.Parse(HttpContext.Session.GetString("ChatId"));
            }

            //string uri = $"{baseuri}/chats/{chatId}";
            string uri         = $"{baseuri}/chats/GetChatSafe/{chatId}/{myId}";//extra controle als je wel lid bent van deze chat
            Chat   currentChat = await WebApiHelper.GetApiResult <Chat>(uri);

            if (currentChat != null)
            {
                uri = $"{baseuri}/messages/range/{chatId}/{0}/{20}";//--> enkel de 20 recentste berichten worden getoond
                List <Message> messagesFromChat = await WebApiHelper.GetApiResult <List <Message> >(uri);

                currentChat.Messages = messagesFromChat;//de messages moeten apart opgehaald worden door de [JsonIgnore] in Chat class

                UserSimpleDTO currentUser = await GetUserWithId(myId);

                OpenExistingChatVM vm = new OpenExistingChatVM
                {
                    Chat = currentChat,
                    Me   = currentUser,
                    Id   = myId
                };
                return(View(vm));
            }
            return(new RedirectToActionResult("Index", "Home", null));
        }
Beispiel #10
0
        public async Task <IActionResult> TryAgain()
        {
            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }

            UserSimpleDTO user = await GetUserWithId(userId);

            string serializedPokemon = HttpContext.Session.GetString("PokemonData");

            if (PokemonErrorCheck(serializedPokemon))
            {
                return(new RedirectToActionResult("Walkaround", "Explore", null));
            }

            var pokemonData = JsonConvert.DeserializeObject <PokemonSessionData>(serializedPokemon);

            string  uri      = $"{baseuri}/Pokemons/GetById/{pokemonData.Id}";
            Pokemon template = await WebApiHelper.GetApiResult <Pokemon>(uri);

            PokemonCatch appearedPokemon = GetPokemonCatchObject(pokemonData.Id, userId, pokemonData.HP, pokemonData.CP,
                                                                 pokemonData.Height, pokemonData.Weight, pokemonData.Gender,
                                                                 pokemonData.IsShiny, pokemonData.IsAlolan, pokemonData.MoveCatches);

            appearedPokemon.Pokemon = template;

            ExploreCatchVm vm = new ExploreCatchVm();

            vm.AppearedPokemon = appearedPokemon;
            vm.UserName        = user.UserName;
            vm.BaseUri         = baseuriClient;
            vm.FolderType      = GeneralFunctions.EvaluateFolderType(appearedPokemon.IsShiny, appearedPokemon.IsAlolan);
            return(View(vm));
        }
Beispiel #11
0
        public async Task <IActionResult> SendFirstMessage(ChatSendFirstMessageVM vm)
        {
            Guid senderId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                senderId = (Guid)tempUserId;
            }

            UserSimpleDTO sender = await GetUserWithId(senderId);

            Guid          receiverId = Guid.Parse(HttpContext.Session.GetString("ReceiverId"));
            UserSimpleDTO receiver   = await GetUserWithId(receiverId);

            if (ModelState.IsValid)
            {
                Chat chat = new Chat
                {
                    Name             = $"{sender.UserName}, {receiver.UserName}",
                    CreatorId        = senderId,
                    CreateDate       = DateTime.Now,
                    LastMessage      = vm.Text,
                    NumberOfUsers    = 2, //minimum
                    NumberOfMessages = 1  //bij het maken van de chat is er steeds 1 message aan gekoppeld
                };

                string uri         = $"{baseuri}/chats";
                Chat   createdChat = await WebApiHelper.PostCallAPI <Chat, Chat>(uri, chat);

                Message message = new Message
                {
                    Text = createdChat.LastMessage,
                    //Chat = createdChat,--> Navigation properties geven een error bij post request
                    ChatId   = createdChat.Id,
                    SenderId = createdChat.CreatorId,
                    SendDate = DateTime.Now
                };
                uri = $"{baseuri}/messages";
                Message createdMessage = await WebApiHelper.PostCallAPI <Message, Message>(uri, message);

                UserChat senderData = new UserChat
                {
                    ChatId = createdChat.Id,
                    UserId = createdChat.CreatorId
                };
                uri = $"{baseuri}/userchats";
                UserChat uc1 = await WebApiHelper.PostCallAPI <UserChat, UserChat>(uri, senderData);

                UserChat receiverData = new UserChat
                {
                    ChatId = createdChat.Id,
                    UserId = receiverId
                };
                UserChat uc2 = await WebApiHelper.PostCallAPI <UserChat, UserChat>(uri, receiverData);

                HttpContext.Session.SetString("ChatId", createdChat.Id.ToString());
                return(new RedirectToActionResult("OpenExistingChat", "Chat", createdChat.Id));
            }
            vm.Receiver = receiver;
            return(View(vm));
        }
Beispiel #12
0
        public async Task <IActionResult> CatchProcesser()
        {
            Guid userId;
            Guid?tempUserId = CheckSession();

            if (tempUserId == null)
            {
                return(new RedirectToActionResult("Login", "Account", null));
            }
            else
            {
                userId = (Guid)tempUserId;
            }

            UserSimpleDTO user = await GetUserWithId(userId);

            string serializedPokemon = HttpContext.Session.GetString("PokemonData");

            if (PokemonErrorCheck(serializedPokemon))
            {
                return(new RedirectToActionResult("Walkaround", "Explore", null));
            }

            var pokemonData = JsonConvert.DeserializeObject <PokemonSessionData>(serializedPokemon);

            string  uri      = $"{baseuri}/Pokemons/GetById/{pokemonData.Id}";
            Pokemon template = await WebApiHelper.GetApiResult <Pokemon>(uri);

            PokemonCatch appearedPokemon = GetPokemonCatchObject(pokemonData.Id, userId, pokemonData.HP, pokemonData.CP,
                                                                 pokemonData.Height, pokemonData.Weight, pokemonData.Gender,
                                                                 pokemonData.IsShiny, pokemonData.IsAlolan, pokemonData.MoveCatches);

            appearedPokemon.Pokemon = template;
            appearedPokemon.AppType = "Webbrowser";

            int luckyNumber = random.Next(0, 2);

            if (luckyNumber == 1)          //50% dat de pokemon is gevangen.
            {
                pokemonData.Caught = true; /*om cheaten te vermijden*/
                string serializedPokemonData = JsonConvert.SerializeObject(pokemonData);
                HttpContext.Session.SetString("PokemonData", serializedPokemonData);

                uri = $"{baseuri}/PokemonCatches/Add";
                //var AddedPokemonId = await WebApiHelper.PostCallAPI<Guid, PokemonCatch>(uri, appearedPokemon);
                var AddedPokemonId = await WebApiHelperPost.PostAsyncGuid(uri, appearedPokemon);

                uri = $"{baseuri}/PokemonMoveCatches/Add";
                foreach (var el in appearedPokemon.PokemonMoveCatches)
                {
                    el.PokemonId = AddedPokemonId;
                    //await WebApiHelper.PostCallAPI<PokemonMoveCatch, PokemonMoveCatch>(uri, el);
                    await WebApiHelperPost.PostAsync(uri, el);
                }

                uri = $"{baseuri}/PokemonUsers/GetById/{pokemonData.Id}/{userId}";
                PokemonUser alreadyCaught = await WebApiHelper.GetApiResult <PokemonUser>(uri);//user heeft resp pokemon al gevangen

                if (alreadyCaught == null)
                {
                    PokemonUser pokemonUser = new PokemonUser()
                    {
                        PokemonId = pokemonData.Id,
                        UserId    = userId,
                        Catches   = 1
                    };

                    uri = $"{baseuri}/PokemonUsers/Add";
                    //await WebApiHelper.PostCallAPI<PokemonUser, PokemonUser>(uri, pokemonUser);
                    await WebApiHelperPost.PostAsync(uri, pokemonUser);
                }
                else
                {
                    uri = $"{baseuri}/PokemonUsers/UpdateAdd";
                    //await WebApiHelper.PutCallAPI<PokemonUser, PokemonUser>(uri, alreadyCaught);
                    await WebApiHelperPost.PutAsync(uri, alreadyCaught);
                }
                return(new RedirectToActionResult("Gotcha", "Explore", null));
            }
            else
            {
                pokemonData.CheatingWarning = null;
                string serializedPokemonData = JsonConvert.SerializeObject(pokemonData);
                HttpContext.Session.SetString("PokemonData", serializedPokemonData);
                return(new RedirectToActionResult("TryAgain", "Explore", null));
                //om een refresh bij CatchProcesser te voorkomen word je weggestuurd
            }
        }