Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Exam/Exam/Exam.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,12 @@
<UseWPF>true</UseWPF>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>

<ItemGroup>
<Folder Include="data\" />
</ItemGroup>

</Project>
29 changes: 18 additions & 11 deletions Exam/Exam/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,14 @@
<MenuItem FontSize="20" Header="_File">
<MenuItem
x:Name="Close"
Click="Close_OnClick"
FontSize="20"
Header="_Close" />
<MenuItem
x:Name="OpenFile"
Click="OpenFile_Click"
FontSize="20"
Header="Open File with data" />
<MenuItem
x:Name="SaveFile"
Click="SaveFile_Click"
FontSize="20"
Header="Save loaded universities" />
</MenuItem>
Expand Down Expand Up @@ -65,11 +62,17 @@
x:Name="CountryNameInput"
Grid.Column="0"
Margin="0,0,20,0"
Padding="3" />
Padding="3" TextChanged="CountryNameInput_TextChanged" />
<Button
x:Name="Search"
Grid.Column="1"
Click="Search_Click">
Click="Search_Click" Height="24" VerticalAlignment="Bottom">
<Button.Background>
<RadialGradientBrush>
<GradientStop Color="Black"/>
<GradientStop Color="#FFC7F07A" Offset="1"/>
</RadialGradientBrush>
</Button.Background>
Search
</Button>
</Grid>
Expand All @@ -87,21 +90,25 @@
<GroupBox Grid.Column="1" Padding="5">
<GroupBox.Header>Bitcoin</GroupBox.Header>
<Grid VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="77*"/>
<ColumnDefinition Width="12*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" MinHeight="25" />
<RowDefinition />
</Grid.RowDefinitions>
<Button
x:Name="Bitcoin"
Grid.Row="0"
HorizontalAlignment="Right"
HorizontalAlignment="Left"
Click="Bitcoin_Click"
Content="Update Bitcoin" />
Content="Update Bitcoin" Background="#FF69D5F9" Grid.ColumnSpan="2" Margin="96,0,0,1" Width="82" />
<ListBox
x:Name="BitcoinsList"
Grid.Row="1"
Margin="0,5,0,0"
Padding="5" />
Margin="0,25,0,0"
Padding="5" Grid.ColumnSpan="2" Background="#FF0B100F" Foreground="#FF64F305" FontSize="14" />
</Grid>
</GroupBox>
<GroupBox Grid.Column="2" Padding="5">
Expand Down
95 changes: 89 additions & 6 deletions Exam/Exam/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
using System;
using Exam.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics.Metrics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
Expand All @@ -12,6 +19,7 @@
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static System.Net.WebRequestMethods;

namespace Exam
{
Expand All @@ -20,22 +28,97 @@ namespace Exam
/// </summary>
public partial class MainWindow : Window
{
public const string STOCKS_API_URL = "https://ps-async.fekberg.com/api/stocks/";
public string STOCKS_API_URL = "https://ps-async.fekberg.com/api/stocks/";
public const string BITCOIN_API_URL = "https://api.coindesk.com/v1/bpi/currentprice.json";

private List<Coins> list = new List<Coins>();
private List<Kompaniya> _list = new List<Kompaniya>();

public MainWindow()
{
InitializeComponent();
}

private void Search_Click(object sender, RoutedEventArgs e)
private async void Search_Click(object sender, RoutedEventArgs e)
{

//CountryNameInput
var url = STOCKS_API_URL;

if (string.IsNullOrEmpty(CountryNameInput.Text))
{
url = STOCKS_API_URL;
}
else
{
url = STOCKS_API_URL + "country=" + CountryNameInput.Text;
}

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
var request = await client.GetAsync(" ");
var json = await request.Content.ReadAsStringAsync();
var deJson = JsonConvert.DeserializeObject<Kompaniya>(json);

//faylga yozish Kompanya
await DataKompanya(deJson);

StocksDataGrid.ItemsSource = new List<Kompaniya>();
_list.Add(deJson);

StocksDataGrid.ItemsSource = _list;

}
public async Task DataKompanya(Kompaniya data)
{
string path = @"C:\Users\shohb\OneDrive\Ishchi stol\modul-04\Module-04\Exam\Exam\data\data.json";
if (!System.IO.File.Exists(path))
{
System.IO.File.Create(path).Close();
}
using(StreamWriter sw = new StreamWriter(path))
{
await sw.WriteLineAsync(data.change.ToString());
}
}
private async void Bitcoin_Click(object sender, RoutedEventArgs e)
{
BitcoinsList.ItemsSource = new List<Coins>();
var coinDesk = await RequestBitCoinsAsync();

list.Add(coinDesk);

BitcoinsList.ItemsSource = list;
}
public async Task<Coins> RequestBitCoinsAsync()
{
// StocksDataGrid.ItemsSource =
var url = BITCOIN_API_URL;

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
var request = await client.GetAsync("");
var Json = await request.Content.ReadAsStringAsync();

// faylga yozish bitcoins
string path = @"C:\Users\shohb\OneDrive\Ishchi stol\modul-04\Module-04\Exam\Exam\data\coin.txt";
if (!System.IO.File.Exists(path))
{
System.IO.File.Create(path).Close();
}
using (StreamWriter sw = new StreamWriter(path, true))
{
sw.WriteLine(Json.ToString());
}


var Deserializer = JsonConvert.DeserializeObject<Coins>(Json);
return Deserializer;
}


private void Bitcoin_Click(object sender, RoutedEventArgs e)
private void CountryNameInput_TextChanged(object sender, TextChangedEventArgs e)
{
// BitcoinsList.ItemsSource =

}
}
}
66 changes: 66 additions & 0 deletions Exam/Exam/Models/Coins.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exam.Models
{
public class Coins
{
public Time time { get; set; }
public string disclaimer { get; set; }
public string chartName { get; set; }
public Bpi bpi { get; set; }
public override string ToString()
{
return $"{time}, {bpi.USD.rate}, {disclaimer},{chartName},{bpi.USD.code}";
}
}
// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse);
public class Bpi
{
public USD USD { get; set; }
public GBP GBP { get; set; }
public EUR EUR { get; set; }
}

public class EUR
{
public string code { get; set; }
public string symbol { get; set; }
public string rate { get; set; }
public string description { get; set; }
public double rate_float { get; set; }
}

public class GBP
{
public string code { get; set; }
public string symbol { get; set; }
public string rate { get; set; }
public string description { get; set; }
public double rate_float { get; set; }
}



public class Time
{
public string updated { get; set; }
public DateTime updatedISO { get; set; }
public string updateduk { get; set; }
}

public class USD
{
public string code { get; set; }
public string symbol { get; set; }
public string rate { get; set; }
public string description { get; set; }
public double rate_float { get; set; }

}


}
30 changes: 30 additions & 0 deletions Exam/Exam/Models/Kompaniya.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exam.Models
{
// Root myDeserializedClass = JsonConvert.DeserializeObject<List<Root>>(myJsonResponse);
public class Kompaniya
{
public string ticker { get; set; }
public string identifier { get; set; }
public DateTime tradeDate { get; set; }
public object open { get; set; }
public object high { get; set; }
public object low { get; set; }
public object close { get; set; }
public int volume { get; set; }
public double change { get; set; }
public double changePercent { get; set; }

public override string ToString()
{
return $"DateTime:{tradeDate}, Ticker:{ticker}, ChangePercent:{changePercent}";
}
}


}
Loading