diff --git a/ShoppingAssistantWebClient.Web/Models/Messages.cs b/ShoppingAssistantWebClient.Web/Models/Messages.cs
new file mode 100644
index 0000000..9cbed36
--- /dev/null
+++ b/ShoppingAssistantWebClient.Web/Models/Messages.cs
@@ -0,0 +1,14 @@
+namespace ShoppingAssistantWebClient.Web.Models
+{
+ public class Messages
+ {
+
+ public required string Id { get; set; }
+
+ public required string Text { get; set; }
+
+ public required string Role { get; set; }
+
+ public required string CreatedById { get; set; }
+ }
+}
diff --git a/ShoppingAssistantWebClient.Web/Pages/Chat.razor b/ShoppingAssistantWebClient.Web/Pages/Chat.razor
index d3ed902..939c8e8 100644
--- a/ShoppingAssistantWebClient.Web/Pages/Chat.razor
+++ b/ShoppingAssistantWebClient.Web/Pages/Chat.razor
@@ -23,25 +23,26 @@
- -
-
Give me product recommendation. Ask me questions if you need more directions. I am looking for:
- hub for my macbook to connect external monitors
-
- -
-
Sure! I can help you with that. I will ask you some leading questions. This is the first:
-
- How many external monitors do you want to connect to your MacBook?
-
-
- -
-
7
-
- -
-
Thank you. Here is the next question:
-
- What type of external monitors do you have? (e.g., HDMI, DisplayPort, VGA)
-
-
+ @if(!isLoading && Messages!=null){
+
+ @foreach (var item in Messages){
+
+ if(item.Role!="User"){
+
+ -
+
@item.Text
+
+
+ }else{
+
+ -
+
@item.Text
+
+
+ }
+ }
+
+ }
@@ -71,9 +72,9 @@
@@ -89,4 +90,18 @@
@code {
[Parameter] public string chatId { get; set; }
+
+ protected override async Task OnParametersSetAsync()
+ {
+ await LoadMessages();
+ }
+
+ public void Enter(KeyboardEventArgs e)
+ {
+ if (e.Code == "Enter" || e.Code == "NumpadEnter")
+ {
+ AddNewMessage();
+ }
+ }
+
}
\ No newline at end of file
diff --git a/ShoppingAssistantWebClient.Web/Pages/Chat.razor.cs b/ShoppingAssistantWebClient.Web/Pages/Chat.razor.cs
index 44e32ae..6fbee2d 100644
--- a/ShoppingAssistantWebClient.Web/Pages/Chat.razor.cs
+++ b/ShoppingAssistantWebClient.Web/Pages/Chat.razor.cs
@@ -9,40 +9,91 @@ namespace ShoppingAssistantWebClient.Web.Pages;
public partial class Chat : ComponentBase
{
- [Inject]
- private ApiClient _apiClient { get; set; }
+ [Inject]
+ private ApiClient _apiClient { get; set; }
-
- protected override async Task OnInitializedAsync()
+ public List Messages { get; set; }
+ public bool isLoading = true;
+ private string inputValue = "";
+ protected override async Task OnInitializedAsync()
{
- await LoadMenus();
+ await LoadMessages();
}
- private async Task LoadMenus()
+ private async Task LoadMessages()
{
- var pageNumber = 1;
+
+
+ isLoading = true;
+ int pageNumber = 1;
+ string wishlistId = chatId;
var request = new GraphQLRequest
{
- Query = @"mutation StartPersonalWishlist {
- startPersonalWishlist(dto: { type: product, firstMessageText: hello }) {
- id
- name
- type
- createdById
- }
- }",
+ Query = @"query MessagesPageFromPersonalWishlist($wishlistId: String!, $pageNumber: Int!, $pageSize: Int!) {
+ messagesPageFromPersonalWishlist( wishlistId: $wishlistId, pageNumber: $pageNumber, pageSize: $pageSize)
+ {
+ items {
+ id
+ text
+ role
+ createdById
+ }
+ }
+ }",
Variables = new
{
- pageNumber = pageNumber,
- pageSize = 12,
+ wishlistId,
+ pageNumber,
+ pageSize = 20
+ }
+ };
+ try{
+ var response = await _apiClient.QueryAsync(request);
+ var responseData = response.Data;
+ var jsonCategoriesResponse = JsonConvert.SerializeObject(responseData.messagesPageFromPersonalWishlist.items);
+ this.Messages = JsonConvert.DeserializeObject>(jsonCategoriesResponse);
+ Messages.Reverse();
+ isLoading = false;
+
+ }catch{
+
+ }
+
+
+ }
+ private async Task AddNewMessage()
+ {
+
+ isLoading = true;
+ var pageNumber = 1;
+ var wishlistId = chatId;
+ var text = inputValue;
+ inputValue="";
+ var request = new GraphQLRequest
+ {
+ Query = @"mutation AddMessageToPersonalWishlist($wishlistId: String!, $text: String!) {
+ addMessageToPersonalWishlist(wishlistId: $wishlistId, dto: { text: $text }) {
+ id
+ text
+ role
+ createdById
+ }
+ }
+ ",
+
+ Variables = new
+ {
+ wishlistId,
+ text
}
};
- var response = await _apiClient.QueryAsync(request);
+ var response = await _apiClient.QueryAsync(request);
+ await LoadMessages();
+ }
- }
diff --git a/ShoppingAssistantWebClient.Web/Pages/Chat.razor.css b/ShoppingAssistantWebClient.Web/Pages/Chat.razor.css
index 33531e7..495038c 100644
--- a/ShoppingAssistantWebClient.Web/Pages/Chat.razor.css
+++ b/ShoppingAssistantWebClient.Web/Pages/Chat.razor.css
@@ -56,6 +56,7 @@
}
.possible_options {
+ visibility: hidden;
position: absolute;
bottom: 5.5em;
margin-left: 25%;
diff --git a/ShoppingAssistantWebClient.Web/Pages/Index.razor b/ShoppingAssistantWebClient.Web/Pages/Index.razor
index e447132..59320ca 100644
--- a/ShoppingAssistantWebClient.Web/Pages/Index.razor
+++ b/ShoppingAssistantWebClient.Web/Pages/Index.razor
@@ -19,10 +19,10 @@
What you're looking for
-
+
Product
-
@@ -52,9 +52,9 @@
@@ -68,12 +68,15 @@
var choose_product = document.getElementById("choose_product");
var switchGi = document.querySelector(".switch_gift");
var switchProd = document.querySelector(".switch_product");
+ var choose = "Product";
function switchGift() {
choose_gift.style.backgroundColor = "#0052CC";
choose_product.style.backgroundColor = "transparent";
switchGi.style.color = "white";
switchProd.style.color = "#202124";
+ choose = "Gift";
+
}
function switchProduct() {
@@ -81,6 +84,8 @@
choose_gift.style.backgroundColor = "transparent";
switchProd.style.color = "white";
switchGi.style.color = "#202124";
+ choose = "Product";
+
}
document.getElementById('choose_gift').addEventListener('click', switchGift);
@@ -88,3 +93,13 @@
document.getElementById('button_open').addEventListener('click', changetyle);
+@code{
+ private string selectedChoice = "Product";
+
+ private void Сhoose_product() {
+ selectedChoice = "Product";
+ }
+ private void Сhoose_gift() {
+ selectedChoice = "Gift";
+ }
+}
diff --git a/ShoppingAssistantWebClient.Web/Pages/Index.razor.cs b/ShoppingAssistantWebClient.Web/Pages/Index.razor.cs
new file mode 100644
index 0000000..601e4a9
--- /dev/null
+++ b/ShoppingAssistantWebClient.Web/Pages/Index.razor.cs
@@ -0,0 +1,57 @@
+using Microsoft.AspNetCore.Components;
+using ShoppingAssistantWebClient.Web.Models;
+using GraphQL;
+using Newtonsoft.Json;
+using ShoppingAssistantWebClient.Web.Network;
+
+
+namespace ShoppingAssistantWebClient.Web.Pages
+{
+ public partial class Index : ComponentBase
+ {
+
+ [Inject]
+ private ApiClient _apiClient { get; set; }
+ [Inject]
+ private NavigationManager Navigation { get; set; }
+
+ private string inputValue = "";
+ public bool isLoading = true;
+
+
+ private async Task CreateNewChat() {
+
+ if(inputValue!=""){
+
+ var type = selectedChoice;
+
+ var firstMessageText= inputValue;
+ var request = new GraphQLRequest
+ {
+ Query = @"mutation StartPersonalWishlist($type: String!, $firstMessageText: String!) {
+ startPersonalWishlist(dto: { type: $type, firstMessageText: $firstMessageText }) {
+ id
+ }
+ }
+ ",
+
+ Variables = new
+ {
+ type,
+ firstMessageText
+ }
+ };
+
+ var response = await _apiClient.QueryAsync(request);
+ var responseData = response.Data;
+ var chat_id = responseData.startPersonalWishlist.id;
+ var url = $"/chat/{chat_id}";
+ Navigation.NavigateTo(url);
+
+ }
+
+
+ }
+
+ }
+}
diff --git a/ShoppingAssistantWebClient.Web/Shared/NavMenu.razor b/ShoppingAssistantWebClient.Web/Shared/NavMenu.razor
index 270aa40..08dd11c 100644
--- a/ShoppingAssistantWebClient.Web/Shared/NavMenu.razor
+++ b/ShoppingAssistantWebClient.Web/Shared/NavMenu.razor
@@ -3,7 +3,6 @@
-
CARTAID
@@ -39,11 +38,8 @@
}
- }else{
-
loading ...
}
-
@@ -58,10 +54,8 @@
-
-
@@ -85,20 +79,12 @@
right_frame.style.left = '23.25em';
}
}
-
-
-
-
-
-
-
document.getElementById('button_close').addEventListener('click', changetyle);
@code {
-
private void RedirectToPage(string itemId) {
var url = $"/chat/{itemId}";
Navigation.NavigateTo(url);
@@ -117,4 +103,9 @@
}
+ public void UpdateSideMenu()
+ {
+ StateHasChanged();
+ }
+
}
diff --git a/ShoppingAssistantWebClient.Web/Shared/NavMenu.razor.cs b/ShoppingAssistantWebClient.Web/Shared/NavMenu.razor.cs
index 69d7f8e..b4ca1e9 100644
--- a/ShoppingAssistantWebClient.Web/Shared/NavMenu.razor.cs
+++ b/ShoppingAssistantWebClient.Web/Shared/NavMenu.razor.cs
@@ -11,23 +11,14 @@ namespace ShoppingAssistantWebClient.Web.Shared
[Inject]
private ApiClient _apiClient { get; set; }
-
- //public string jwt;
-
public List Wishlists { get; set; }
public bool isLoading = true;
protected override async Task OnInitializedAsync()
{
- //jwt = _apiClient.JwtToken;
-
await LoadMenus();
}
-
-
private async Task LoadMenus()
{
-
-
isLoading = true;
var pageNumber = 1;
var request = new GraphQLRequest
@@ -53,7 +44,6 @@ namespace ShoppingAssistantWebClient.Web.Shared
var jsonCategoriesResponse = JsonConvert.SerializeObject(responseData.personalWishlistsPage.items);
this.Wishlists = JsonConvert.DeserializeObject>(jsonCategoriesResponse);
isLoading = false;
-
}
protected async Task DeleteWish(string wishlistId)
@@ -74,7 +64,7 @@ namespace ShoppingAssistantWebClient.Web.Shared
};
var response = await _apiClient.QueryAsync(request);
- var responseData = response.Data;
+ await LoadMenus();
}
}