Yonglun Liu (Shanghai Wicresoft Co,.Ltd.)
I created a fresh app and installed nuget it works now.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
@page "/"
@using System.Text;
@using System.Net.Http.Headers;
@using Microsoft.AspNetCore.Components;
@using Newtonsoft.Json;
@using RateApp.Models;
@if (listcount > 0)
{
<div class="row">
<div class="col-md-3">
<p>Deposit Amount INR</p>
</div>
<input type="range" min="1000" max="100000" step="1000" @bind="@amount"
@onchange="@UpdateCurrentInterestValue" @bind:event="oninput" />
<p>@amount</p>
</div>
<br />
<div class="row">
<p>Years:</p>
<input type="range" min="1" max="5" step="1" @bind="@years"
@onchange="@UpdateCurrentInterestValue" @bind:event="oninput" />
</div>
<p>@years</p>
<br />
<div class="row">
<select @bind="@srcitizen"
@onchange="@UpdateCurrentInterestValue" @bind:event="oninput" >
<option value="0">Non Sr Citizen</option>
<option value="1">Sr Citizen</option>
</select>
</div>
@if (srcitizen > 0)
{
<p>Sr Citizen</p>
}
@if (srcitizen == 0)
{
<p>Non Sr Citizen</p>
}
<br />
<div class="row">
<select @bind="@cumulative"
@onchange="@UpdateCurrentInterestValue" @bind:event="oninput" >
<option value="0">Interest Non Cumulative</option>
<option value="1">Interest Cumulated Quarterly</option>
<option value="2">Interest Cumulated Semi annually</option>
<option value="3">Interest Cumulated Annually</option>
</select>
</div>
@if (cumulative == 0)
{
<p>Interest Non Cumulative</p>
}
@if (cumulative == 1)
{
<p>Interest Cumulated Quarterly</p>
}
@if (cumulative == 2)
{
<p>Interest Cumulated Semi annual</p>
}
@if (cumulative == 3)
{
<p>Interest Cumulated Annual</p>
}
<div class="row">
<div class="col-md-3">
<p>Deposit Amount INR</p>
</div>
<p>@amount</p>
</div>
<br />
<div class="row">
<p>Years:</p>
<p>@years</p>
</div>
<br />
<div class="row">
<p>Interest:</p>
<p>@dispint</p>
</div>
<div>
<div class="col-md-3">
<p>Maturity Amount INR </p>
</div>
<div>@final</div>
</div>
}
@if(listcount==0)
{
<p>Loading... </p>
}
@code {
QuestionsDatabase questionsDatabase;
public int srcitizen;
public int listcount; public int totfinal;
public string codex; public string jsonstring ; public bool statcode;
List<InQuestion> Questions = new List<InQuestion>();
public int number; int years = 1; decimal interest; decimal srinterest; int totalquestions; int maxnumber; int amount = 1000; decimal imint; decimal final; decimal finalcompound; decimal dispint;
decimal imstint; decimal srfinal; decimal srfinalcompound; decimal cumulative;
protected override async Task OnInitializedAsync()
{
string connecteddb = "N";
string jwturl = "https://quizapijwt.azurewebsites.net/api/";
using (var client1 = new HttpClient())
{
questionsDatabase = new QuestionsDatabase();
client1.BaseAddress = new Uri(jwturl);
client1.DefaultRequestHeaders.Clear();
client1.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = null;
try
{
response = await client1.GetAsync("RateCards");
}
catch (Exception ex)
{
Questions = await questionsDatabase.GetItemsAsync();
Questions = Questions.OrderBy(x => x.DaysBegin).ToList();
listcount = Questions.Count();
var imint = (from l in Questions
where l.DaysBegin == years
select l.Interest).FirstOrDefault();
decimal amt = amount;
decimal finint = Decimal.Multiply(amt, imint);
interest = Decimal.Multiply(finint, years);
final = Math.Round(((interest / 100) + amt), 2);
double citotal; int t = 0;
double ciint; decimal cifinal = 0.0M;
ciint = (double)imint;
int annualCompound = 200;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (2 * years)));
finalcompound = Math.Round(cifinal, 2);
var srimint = (from l in Questions
where l.DaysBegin == years
select l.SrInterest).FirstOrDefault();
//
decimal srfinint = Decimal.Multiply(amt, srimint);
srinterest = Decimal.Multiply(srfinint, years);
srfinal = Math.Round(((srinterest / 100) + amt), 2);
//
double srciint; decimal srcifinal = 0.0M;
srciint = (double)srimint;
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (2 * years)));
srfinalcompound = Math.Round(srcifinal, 2);
dispint = imint; connecteddb = "Y";
}
if (connecteddb == "N")
{
if (response.IsSuccessStatusCode)
{
//Storing the response details recieved from web api
List<InQuestion> itemInTheDB = await questionsDatabase.GetItemsAsync();
foreach (InQuestion item in itemInTheDB)
{
var result = Questions.FirstOrDefault(c => c.No == item.No);
if (result == null)
{
await questionsDatabase.DeleteItemAsync(item);
}
}
try
{
jsonstring = await response.Content.ReadAsStringAsync();
Questions = JsonConvert.DeserializeObject<List<InQuestion>>(jsonstring);
// connected = "Y";
foreach (InQuestion itemdb in Questions)
{
await questionsDatabase.SaveItemAsync(itemdb);
}
Questions = Questions.OrderBy(x => x.DaysBegin).ToList();
listcount = Questions.Count();
var imint = (from l in Questions
where l.DaysBegin == years
select l.Interest).FirstOrDefault();
decimal amt = amount;
decimal finint = Decimal.Multiply(amt, imint);
interest = Decimal.Multiply(finint, years);
final = Math.Round(((interest / 100) + amt), 2);
double citotal; int t = 0;
double ciint; decimal cifinal = 0.0M;
ciint = (double)imint;
int annualCompound = 200;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (2 * years)));
finalcompound = Math.Round(cifinal, 2);
var srimint = (from l in Questions
where l.DaysBegin == years
select l.SrInterest).FirstOrDefault();
//
decimal srfinint = Decimal.Multiply(amt, srimint);
srinterest = Decimal.Multiply(srfinint, years);
srfinal = Math.Round(((srinterest / 100) + amt), 2);
//
double srciint; decimal srcifinal = 0.0M;
srciint = (double)srimint;
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (2 * years)));
srfinalcompound = Math.Round(srcifinal, 2);
dispint = imint;
}
catch (Exception ex)
{
}
}
}
}
}
private void UpdateCurrentInterestValue()
{
try
{
var imint = (from l in Questions
where l.DaysBegin == years
select l.Interest).FirstOrDefault() ;
var srimint = (from l in Questions
where l.DaysBegin == years
select l.SrInterest).FirstOrDefault();
decimal amt = amount;
if (cumulative == 0)
{
decimal finint = Decimal.Multiply(amt, imint);
interest = Decimal.Multiply(finint, years);
final = Math.Round(((interest / 100) + amt),2);
decimal srfinint = Decimal.Multiply(amt, srimint);
srinterest = Decimal.Multiply(srfinint, years);
srfinal = Math.Round(((srinterest / 100) + amt),2);
}
double ciint; double srciint; decimal cifinal = 0.0M;
decimal srcifinal = 0.0M;
if (cumulative == 3)
{
int annualCompound = 100;
// int t = 0;
ciint = (double)imint;
srciint = (double)srimint;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (1 * years)));
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (1 * years)));
}
if (cumulative == 2)
{
int annualCompound = 200;
// int t = 0;
ciint = (double)imint;
srciint = (double)srimint;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (2 * years)));
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (2 * years)));
}
if (cumulative == 1)
{
int annualCompound = 400;
// int t = 0;
ciint = (double)imint;
srciint = (double)srimint;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (4 * years)));
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (4 * years)));
}
if (cumulative > 0)
{
finalcompound = Math.Round(cifinal,2);
final = finalcompound;
}
srfinalcompound = Math.Round(srcifinal,2);
dispint = imint;
if (srcitizen > 0)
{
if (cumulative == 0)
{ final = srfinal; }
else
{ final = srfinalcompound; }
dispint = srimint;
}
}
catch (Exception ex)
{
}
}
}
@page "/"
@using System.Text;
@using System.Net.Http.Headers;
@using Microsoft.AspNetCore.Components;
@using Newtonsoft.Json;
@using RateApp.Models;
@if (listcount > 0)
{
<div class="row">
<div class="col-md-3">
<p>Deposit Amount INR</p>
</div>
<input type="range" min="1000" max="100000" step="1000" @bind="@amount"
@onchange="@UpdateCurrentInterestValue" @bind:event="oninput" />
<p>@amount</p>
</div>
<br />
<div class="row">
<p>Years:</p>
<input type="range" min="1" max="5" step="1" @bind="@years"
@onchange="@UpdateCurrentInterestValue" @bind:event="oninput" />
</div>
<p>@years</p>
<br />
<div class="row">
<select @bind="@srcitizen"
@onchange="@UpdateCurrentInterestValue" @bind:event="oninput" >
<option value="0">Non Sr Citizen</option>
<option value="1">Sr Citizen</option>
</select>
</div>
@if (srcitizen > 0)
{
<p>Sr Citizen</p>
}
@if (srcitizen == 0)
{
<p>Non Sr Citizen</p>
}
<br />
<div class="row">
<select @bind="@cumulative"
@onchange="@UpdateCurrentInterestValue" @bind:event="oninput" >
<option value="0">Interest Non Cumulative</option>
<option value="1">Interest Cumulated Quarterly</option>
<option value="2">Interest Cumulated Semi annually</option>
<option value="3">Interest Cumulated Annually</option>
</select>
</div>
@if (cumulative == 0)
{
<p>Interest Non Cumulative</p>
}
@if (cumulative == 1)
{
<p>Interest Cumulated Quarterly</p>
}
@if (cumulative == 2)
{
<p>Interest Cumulated Semi annual</p>
}
@if (cumulative == 3)
{
<p>Interest Cumulated Annual</p>
}
<div class="row">
<div class="col-md-3">
<p>Deposit Amount INR</p>
</div>
<p>@amount</p>
</div>
<br />
<div class="row">
<p>Years:</p>
<p>@years</p>
</div>
<br />
<div class="row">
<p>Interest:</p>
<p>@dispint</p>
</div>
<div>
<div class="col-md-3">
<p>Maturity Amount INR </p>
</div>
<div>@final</div>
</div>
}
@if(listcount==0)
{
<p>Loading... </p>
}
@code {
QuestionsDatabase questionsDatabase;
public int srcitizen;
public int listcount; public int totfinal;
public string codex; public string jsonstring ; public bool statcode;
List<InQuestion> Questions = new List<InQuestion>();
public int number; int years = 1; decimal interest; decimal srinterest; int totalquestions; int maxnumber; int amount = 1000; decimal imint; decimal final; decimal finalcompound; decimal dispint;
decimal imstint; decimal srfinal; decimal srfinalcompound; decimal cumulative;
protected override async Task OnInitializedAsync()
{
string connecteddb = "N";
string jwturl = "https://quizapijwt.azurewebsites.net/api/";
using (var client1 = new HttpClient())
{
questionsDatabase = new QuestionsDatabase();
client1.BaseAddress = new Uri(jwturl);
client1.DefaultRequestHeaders.Clear();
client1.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = null;
try
{
response = await client1.GetAsync("RateCards");
}
catch (Exception ex)
{
Questions = await questionsDatabase.GetItemsAsync();
Questions = Questions.OrderBy(x => x.DaysBegin).ToList();
listcount = Questions.Count();
var imint = (from l in Questions
where l.DaysBegin == years
select l.Interest).FirstOrDefault();
decimal amt = amount;
decimal finint = Decimal.Multiply(amt, imint);
interest = Decimal.Multiply(finint, years);
final = Math.Round(((interest / 100) + amt), 2);
double citotal; int t = 0;
double ciint; decimal cifinal = 0.0M;
ciint = (double)imint;
int annualCompound = 200;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (2 * years)));
finalcompound = Math.Round(cifinal, 2);
var srimint = (from l in Questions
where l.DaysBegin == years
select l.SrInterest).FirstOrDefault();
//
decimal srfinint = Decimal.Multiply(amt, srimint);
srinterest = Decimal.Multiply(srfinint, years);
srfinal = Math.Round(((srinterest / 100) + amt), 2);
//
double srciint; decimal srcifinal = 0.0M;
srciint = (double)srimint;
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (2 * years)));
srfinalcompound = Math.Round(srcifinal, 2);
dispint = imint; connecteddb = "Y";
}
if (connecteddb == "N")
{
if (response.IsSuccessStatusCode)
{
//Storing the response details recieved from web api
List<InQuestion> itemInTheDB = await questionsDatabase.GetItemsAsync();
foreach (InQuestion item in itemInTheDB)
{
var result = Questions.FirstOrDefault(c => c.No == item.No);
if (result == null)
{
await questionsDatabase.DeleteItemAsync(item);
}
}
try
{
jsonstring = await response.Content.ReadAsStringAsync();
Questions = JsonConvert.DeserializeObject<List<InQuestion>>(jsonstring);
// connected = "Y";
foreach (InQuestion itemdb in Questions)
{
await questionsDatabase.SaveItemAsync(itemdb);
}
Questions = Questions.OrderBy(x => x.DaysBegin).ToList();
listcount = Questions.Count();
var imint = (from l in Questions
where l.DaysBegin == years
select l.Interest).FirstOrDefault();
decimal amt = amount;
decimal finint = Decimal.Multiply(amt, imint);
interest = Decimal.Multiply(finint, years);
final = Math.Round(((interest / 100) + amt), 2);
double citotal; int t = 0;
double ciint; decimal cifinal = 0.0M;
ciint = (double)imint;
int annualCompound = 200;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (2 * years)));
finalcompound = Math.Round(cifinal, 2);
var srimint = (from l in Questions
where l.DaysBegin == years
select l.SrInterest).FirstOrDefault();
//
decimal srfinint = Decimal.Multiply(amt, srimint);
srinterest = Decimal.Multiply(srfinint, years);
srfinal = Math.Round(((srinterest / 100) + amt), 2);
//
double srciint; decimal srcifinal = 0.0M;
srciint = (double)srimint;
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (2 * years)));
srfinalcompound = Math.Round(srcifinal, 2);
dispint = imint;
}
catch (Exception ex)
{
}
}
}
}
}
private void UpdateCurrentInterestValue()
{
try
{
var imint = (from l in Questions
where l.DaysBegin == years
select l.Interest).FirstOrDefault() ;
var srimint = (from l in Questions
where l.DaysBegin == years
select l.SrInterest).FirstOrDefault();
decimal amt = amount;
if (cumulative == 0)
{
decimal finint = Decimal.Multiply(amt, imint);
interest = Decimal.Multiply(finint, years);
final = Math.Round(((interest / 100) + amt),2);
decimal srfinint = Decimal.Multiply(amt, srimint);
srinterest = Decimal.Multiply(srfinint, years);
srfinal = Math.Round(((srinterest / 100) + amt),2);
}
double ciint; double srciint; decimal cifinal = 0.0M;
decimal srcifinal = 0.0M;
if (cumulative == 3)
{
int annualCompound = 100;
// int t = 0;
ciint = (double)imint;
srciint = (double)srimint;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (1 * years)));
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (1 * years)));
}
if (cumulative == 2)
{
int annualCompound = 200;
// int t = 0;
ciint = (double)imint;
srciint = (double)srimint;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (2 * years)));
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (2 * years)));
}
if (cumulative == 1)
{
int annualCompound = 400;
// int t = 0;
ciint = (double)imint;
srciint = (double)srimint;
cifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + ciint / annualCompound), (4 * years)));
srcifinal = Decimal.Multiply(amt, (decimal)Math.Pow((1 + srciint / annualCompound), (4 * years)));
}
if (cumulative > 0)
{
finalcompound = Math.Round(cifinal,2);
final = finalcompound;
}
srfinalcompound = Math.Round(srcifinal,2);
dispint = imint;
if (srcitizen > 0)
{
if (cumulative == 0)
{ final = srfinal; }
else
{ final = srfinalcompound; }
dispint = srimint;
}
}
catch (Exception ex)
{
}
}
}
public static class Constants
{
public const string DatabaseFilename = "MCQs.db3";
public const SQLite.SQLiteOpenFlags Flags =
// open the database in read/write mode
SQLite.SQLiteOpenFlags.ReadWrite |
// create the database if it doesn't exist
SQLite.SQLiteOpenFlags.Create |
// enable multi-threaded database access
SQLite.SQLiteOpenFlags.SharedCache;
public static string DatabasePath =>
Path.Combine(FileSystem.AppDataDirectory, DatabaseFilename);
}
using SQLite;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RateApp.Models
{
public class InQuestion
{
[PrimaryKey, Indexed]
public int No { get; set; }
public int DaysBegin { get; set; }
public int DaysEnd { get; set; }
public decimal Interest { get; set; }
public decimal SrInterest { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RateApp.Models
{
internal class PostData
{
public string Name { get; set; }
public string Password { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SQLite;
using RateApp.Models;
namespace RateApp.Models
{
public class QuestionsDatabase
{
SQLiteAsyncConnection Database;
private SQLiteAsyncConnection _dbConnection;
public const string DatabaseFilename = "MCQ.db3";
async Task Init()
{
string dbPath =
Path.Combine(FileSystem.AppDataDirectory, DatabaseFilename);
FileStream fileStream = new FileStream(dbPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
_dbConnection = new SQLiteAsyncConnection(dbPath);
if (Database is not null)
return;
Database = new SQLiteAsyncConnection(dbPath, Constants.Flags);
var result = await Database.CreateTableAsync<InQuestion>();
}
public async Task<List<InQuestion>> GetItemsAsync()
{
await Init();
var res = await Database.Table<InQuestion>().ToListAsync();
return res;
}
public async Task<InQuestion> GetItemAsync(int id)
{
await Init();
return await Database.Table<InQuestion>().Where(i => i.No == id).FirstOrDefaultAsync();
}
public async Task<int> SaveItemAsync(InQuestion item)
{
await Init();
InQuestion res = await GetItemAsync(item.No);
if (res != null)
return await Database.UpdateAsync(item);
else
return await Database.InsertAsync(item);
}
public async Task<int> DeleteItemAsync(InQuestion item)
{
await Init();
return await Database.DeleteAsync(item);
}
}
}
The above code works in Windows but not in Android , Do you see any issue with Sqllite nugets please suggest.It is not connecting to Sqlite from Android.
Added this line in MauiProgram.cs
builder.Services.AddSingleton<QuestionsDatabase>();
Yonglun Liu (Shanghai Wicresoft Co,.Ltd.)
I created a fresh app and installed nuget it works now.