Skip to content
Permalink
Browse files
expense category and home page completed
  • Loading branch information
doryumusharon committed Nov 19, 2020
1 parent 0d3eadf commit bfcf901c2bbb0b9a8038f02f0d3d1e64934b8fdd
Show file tree
Hide file tree
Showing 20 changed files with 3,180 additions and 184 deletions.
@@ -63,6 +63,12 @@
<PackageReference Include="Newtonsoft.Json">
<Version>12.0.3</Version>
</PackageReference>
<PackageReference Include="Rg.Plugins.Popup">
<Version>2.0.0.7</Version>
</PackageReference>
<PackageReference Include="Sharpnado.Forms.HorizontalListView">
<Version>1.8.0</Version>
</PackageReference>
<PackageReference Include="Xam.Plugins.Forms.ImageCircle">
<Version>3.0.0.5</Version>
</PackageReference>
@@ -18,6 +18,7 @@ namespace ExpenseTracker.Droid
ToolbarResource = Resource.Layout.Toolbar;

base.OnCreate(savedInstanceState);
Rg.Plugins.Popup.Popup.Init(this, savedInstanceState);

Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

Large diffs are not rendered by default.

@@ -22,6 +22,7 @@ namespace ExpenseTracker.iOS
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Rg.Plugins.Popup.Popup.Init();
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());

@@ -132,6 +132,12 @@
<PackageReference Include="Newtonsoft.Json">
<Version>12.0.3</Version>
</PackageReference>
<PackageReference Include="Rg.Plugins.Popup">
<Version>2.0.0.7</Version>
</PackageReference>
<PackageReference Include="Sharpnado.Forms.HorizontalListView">
<Version>1.8.0</Version>
</PackageReference>
<PackageReference Include="Xam.Plugins.Forms.ImageCircle">
<Version>3.0.0.5</Version>
</PackageReference>
@@ -14,6 +14,8 @@
<PackageReference Include="FirebaseAuthentication.net" Version="3.4.0" />
<PackageReference Include="FirebaseDatabase.net" Version="4.0.4" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Rg.Plugins.Popup" Version="2.0.0.7" />
<PackageReference Include="Sharpnado.Forms.HorizontalListView" Version="1.8.0" />
<PackageReference Include="Xam.Plugins.Forms.ImageCircle" Version="3.0.0.5" />
<PackageReference Include="Xamarin.Forms" Version="4.6.0.1141" />
<PackageReference Include="Xamarin.Essentials" Version="1.5.3.2" />
@@ -53,5 +55,11 @@
<EmbeddedResource Update="views\pages\ExpensePage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="views\popUps\CategoryPopUp.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
<EmbeddedResource Update="views\popUps\ExpensePopUp.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
</ItemGroup>
</Project>
@@ -14,6 +14,7 @@ namespace ExpenseTracker.viewModel
{
FirebaseClient firebase = new FirebaseClient("https://expensetracker-cdaa4.firebaseio.com");

//get all Expenses
public async Task<List<Expense>> GetAllExpense()
{

@@ -29,22 +30,21 @@ namespace ExpenseTracker.viewModel

}).Reverse().ToList();
}

//all New Expense
public async Task AddExpense(double amount, string narration, int expenseCategory, string id)
{

await firebase
.Child("Expenses")
.PostAsync(new Expense() {

amount = amount,

.PostAsync(new Expense() {
amount = amount,
expenseCategory= expenseCategory,
narration = narration,
id= id,
});
}

//get Details of a particular expense
public async Task<Expense> GetExpense(string expenseID)
{
var allExpense = await GetAllExpense();
@@ -54,7 +54,8 @@ namespace ExpenseTracker.viewModel
return allExpense.Where(a => a.id == expenseID).FirstOrDefault();
}

public async Task UpdatePerson(double amount, string narration, int expenseCategory, string id)
//Update and Expense
public async Task UpdateExpense(double amount, string narration, int expenseCategory, string id)
{
var toUpdatePerson = (await firebase
.Child("Expenses")
@@ -71,6 +72,7 @@ namespace ExpenseTracker.viewModel
});
}

//Deleting an Expense
public async Task DeleteExpense(string expenseID)
{
var toDeletePerson = (await firebase
@@ -81,7 +83,11 @@ namespace ExpenseTracker.viewModel
}


//Category Firebase
//---------------Category Firebase



//get all categories
public async Task<List<ExpenseCategory>> GetAllCategory()
{

@@ -94,7 +100,7 @@ namespace ExpenseTracker.viewModel

}).ToList();
}

//add new category
public async Task AddCategory(int id, string name)
{

@@ -107,7 +113,7 @@ namespace ExpenseTracker.viewModel
id = id,
});
}

//get a new category
public async Task<ExpenseCategory> GetCategory(int categoryID)
{
var allExpense = await GetAllCategory();
@@ -116,6 +122,7 @@ namespace ExpenseTracker.viewModel
.OnceAsync<ExpenseCategory>();
return allExpense.Where(a => a.id == categoryID).FirstOrDefault();
}
//update a new category

public async Task UpdateCategory(string name, int id)
{
@@ -132,6 +139,7 @@ namespace ExpenseTracker.viewModel
});
}

//delete a category
public async Task DeleteCategoory(int categoryID)
{
var toDeletePerson = (await firebase
@@ -164,29 +172,56 @@ namespace ExpenseTracker.viewModel
{
List<CatergoryAmount> categoryAmount = new List<CatergoryAmount>();
var allCategories = await GetAllCategory();
var allExpense = await GetAllExpense();
for (int i = 0; i <= allCategories.Count; i++)
var allExpense = await GetAllExpense();
foreach (var category in allCategories) // Outer loop
{
double amount = 0;
var currentCategory = allCategories[i];
for (int j = 0; j <= allExpense.Count; j++)
// Code that should run for each collection
double amt = 0;

foreach (var expense in allExpense) // Inner loop
{

var currentExpenses = allExpense[j];
if (currentCategory.id==currentExpenses.expenseCategory)
// Code that should run for each item
if (category.id == expense.expenseCategory)
{
amount += currentExpenses.amount;
amt += expense.amount;
}

}
categoryAmount.Add(new CatergoryAmount
{
amount = amount,
id = currentCategory.id,
categoryName=currentCategory.name,
amount = amt,
id = category.id,
categoryName = category.name,
});

}
/* for (int i = 0; i <allCategories.Count; i++)
{
double amt = 0;
//var currentCategory = allCategories[i];
for (int j = 0; j <allExpense.Count; j++)
{
double amount = 1;
//var currentExpenses = allExpense[j];
if (allCategories[i].id == allExpense[j].expenseCategory)
{
amount += allExpense[j].amount;
Console.WriteLine(amount);
}
else
{
amount += 1;
}
amt= amount;
}
categoryAmount.Add(new CatergoryAmount
{
amount = amt,
id = allCategories[i].id,
categoryName= allCategories[i].name,
});
}*/

return categoryAmount;
}
@@ -16,5 +16,6 @@ namespace ExpenseTracker.views.home
{
InitializeComponent();
}

}
}
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:ExpenseTracker.viewModel"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:ExpenseTracker.viewModel" xmlns:renderedViews="http://sharpnado.com"
x:Class="ExpenseTracker.views.home.Home"
NavigationPage.HasNavigationBar="False"
>
@@ -17,12 +17,7 @@
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Image Source="overlay.png" Aspect="Fill" HeightRequest="300" VerticalOptions="StartAndExpand"/>
<StackLayout Orientation="Horizontal" Spacing="20" HorizontalOptions="Start" VerticalOptions="Start" Margin="20,50">
<ImageButton Source="menu.png" WidthRequest="23" HeightRequest="15" HorizontalOptions="Start" VerticalOptions="Center" />

</StackLayout>

<Image Source="overlay.png" Aspect="Fill" HeightRequest="300" VerticalOptions="StartAndExpand"/>
<StackLayout Orientation="Vertical" Margin="0,20" HorizontalOptions="Center" VerticalOptions="Center">
<StackLayout Orientation="Horizontal" HorizontalOptions="Center">
<!--<Image Source="weather.png" WidthRequest="50" HeightRequest="50" VerticalOptions="Center"/>-->
@@ -33,63 +28,85 @@
<Label Text="Total Expenses" TextColor="White" FontSize="25" HorizontalOptions="Center"/>
<Label x:Name="currentTime" Text="June 15, 09:03 AM" TextColor="White" FontSize="12" HorizontalOptions="Center"/>
</StackLayout>
<Grid HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand">
<!-- <Grid HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackLayout Orientation="Vertical" Spacing="10" HorizontalOptions="CenterAndExpand">
<Button HorizontalOptions="Center" VerticalOptions="Center" Clicked="btnPopupAddExpense" Text="Add Expense"></Button>
<Button HorizontalOptions="Center" VerticalOptions="Center" Clicked="btnPopupAddExpense" Text="Add Expense"></Button>
</StackLayout>
<StackLayout Grid.Column="2" Orientation="Vertical" Spacing="10" HorizontalOptions="CenterAndExpand">
<Button HorizontalOptions="Center" VerticalOptions="Center" Clicked="btnPopupAddCategory" Text="Add Catergory"></Button>
</StackLayout>
</Grid>
-->
<Frame Grid.Row="1" HasShadow="True" CornerRadius="10" Margin="20,-40,20,0" Padding="0" HeightRequest="120" VerticalOptions="Start">
<Grid HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackLayout Orientation="Vertical" Spacing="10" HorizontalOptions="CenterAndExpand">
<Image Source="humidity.png" HeightRequest="25" HorizontalOptions="Center"/>
<StackLayout Spacing="7" HorizontalOptions="CenterAndExpand">
<Label Text="50%" TextColor="Black" FontSize="14" FontAttributes="Bold" HorizontalOptions="Center"/>
<Label Text="Humidity" TextColor="#7D7D7D" FontSize="11" HorizontalOptions="Center"/>
</StackLayout>
</StackLayout>
<StackLayout Grid.Column="1" Orientation="Vertical" Spacing="10" HorizontalOptions="CenterAndExpand">
<Image Source="wind.png" HeightRequest="25" HorizontalOptions="Center"/>
<StackLayout Spacing="7" HorizontalOptions="CenterAndExpand">
<Label Text="2.6 m/s" TextColor="Black" FontSize="14" FontAttributes="Bold" HorizontalOptions="Center"/>
<Label Text="Wind" TextColor="#7D7D7D" FontSize="11" HorizontalOptions="Center"/>
</StackLayout>
</StackLayout>
<StackLayout Grid.Column="2" Orientation="Vertical" Spacing="10" HorizontalOptions="CenterAndExpand">
<Image Source="pressure.png" HeightRequest="25" HorizontalOptions="Center"/>
<StackLayout Spacing="7" HorizontalOptions="CenterAndExpand">
<Label Text="1011 hpa" TextColor="Black" FontSize="14" FontAttributes="Bold" HorizontalOptions="Center"/>
<Label Text="Pressure" TextColor="#7D7D7D" FontSize="11" HorizontalOptions="Center"/>
</StackLayout>
</StackLayout>
<StackLayout Grid.Column="3" Orientation="Vertical" Spacing="10" HorizontalOptions="CenterAndExpand">
<Image Source="cloudiness.png" HeightRequest="25" HorizontalOptions="Center"/>
<StackLayout Spacing="7" HorizontalOptions="CenterAndExpand">
<Label Text="24%" TextColor="Black" FontSize="14" FontAttributes="Bold" HorizontalOptions="Center"/>
<Label Text="Cloudiness" TextColor="#7D7D7D" FontSize="11" HorizontalOptions="Center"/>
</StackLayout>
<Grid >

<StackLayout VerticalOptions="Center">
<RelativeLayout HeightRequest="90">
<ListView Rotation ="270"
RowHeight ="90"
VerticalOptions ="FillAndExpand"
CachingStrategy ="RecycleElement"
HorizontalOptions ="FillAndExpand"
SeparatorVisibility="None"
RelativeLayout.XConstraint ="{ConstraintExpression Type=RelativeToParent,Property=Width,Factor=0.5,Constant=-45}"
RelativeLayout.YConstraint ="{ConstraintExpression Type=RelativeToParent, Property=Width,Factor=-0.5,Constant=45}"
RelativeLayout.WidthConstraint ="{ConstraintExpression Type=Constant,Constant=90}"
RelativeLayout.HeightConstraint ="{ConstraintExpression Type=RelativeToParent,Property=Width,Factor=1}"
x:Name="ExpensePerCategory">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ContentView Rotation ="90"
BackgroundColor ="Transparent"
Padding ="0">
<StackLayout Orientation="Vertical" Spacing="10" HorizontalOptions="CenterAndExpand">
<Image Source="pressure.png" HeightRequest="25" HorizontalOptions="Center"/>
<StackLayout Spacing="7" HorizontalOptions="CenterAndExpand">
<Label Text=" {Binding amount}" TextColor="Black" FontSize="14" FontAttributes="Bold" HorizontalOptions="Center"/>
<Label Text="{Binding categoryName}" TextColor="#7D7D7D" FontSize="11" HorizontalOptions="Center"/>
</StackLayout>
</StackLayout>
</ContentView>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Effects>

</ListView.Effects>
</ListView>
</RelativeLayout>
</StackLayout>

<!-- <ContentView HorizontalOptions="Start" VerticalOptions="Start">
<CarouselView x:Name="ExpensePerCategory" >
<CarouselView.ItemTemplate >
<DataTemplate >
<StackLayout Grid.Column="1" Orientation="Vertical" Spacing="10" HorizontalOptions="CenterAndExpand">
<Image Source="pressure.png" HeightRequest="25" HorizontalOptions="Center"/>
<StackLayout Spacing="7" HorizontalOptions="CenterAndExpand">
<Label Text="1011 hpa" TextColor="Black" FontSize="14" FontAttributes="Bold" HorizontalOptions="Center"/>
<Label Text="Pressure" TextColor="#7D7D7D" FontSize="11" HorizontalOptions="Center"/>
</StackLayout>
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
</ContentView>
-->

</Grid>

</Frame>
<StackLayout Grid.Row="2" BackgroundColor="Transparent" Orientation="Horizontal" Margin="20" HorizontalOptions="End">
<!-- <StackLayout Grid.Row="2" BackgroundColor="Transparent" Orientation="Horizontal" Margin="20" HorizontalOptions="End">
<ImageButton x:Name="ListBtn" Source="listColor.png" WidthRequest="15" HeightRequest="15" />
<ImageButton x:Name="GridBtn" Source="grid.png" WidthRequest="15" HeightRequest="15"/>
</StackLayout>
</StackLayout>-->
<!--Popup Area Add Expense-->

<ContentView x:Name="popupLoginView" BackgroundColor="#C0808080" Padding="10, 0" IsVisible="false" AbsoluteLayout.LayoutBounds="0, 0, 1, 1" AbsoluteLayout.LayoutFlags="All">

0 comments on commit bfcf901

Please sign in to comment.