School Commit Init

This commit is contained in:
2024-08-31 12:07:21 +03:00
commit 0b130ee18c
2801 changed files with 4720552 additions and 0 deletions
@@ -0,0 +1,124 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TechTitans.Models;
using TechTitans.Repositories;
namespace TechTitans.Services
{
public class TopGenresController
{
private Repository<SongBasicDetails> SongRepo = new Repository<SongBasicDetails>();
private Repository<SongRecommendationDetails> SongRecommendationRepo= new Repository<SongRecommendationDetails>();
public void getTop3Genres(int month,int year,Label genre1,Label minutes1,Label percentage1 , Label genre2, Label minutes2,Label percentage2, Label genre3 ,Label minutes3, Label percentage3) {
int totalMinutes = 0;
Dictionary<String, int> genreCount = new Dictionary<String, int>();
foreach (SongBasicDetails song in SongRepo.GetAll()) {
foreach (SongRecommendationDetails songDetails in SongRecommendationRepo.GetAll())
{
if (songDetails.Song_Id == song.Song_Id && songDetails.Month == month && songDetails.Year == year)
{
totalMinutes += songDetails.Minutes_Listened;
if (genreCount.ContainsKey(song.Genre))
{
genreCount[song.Genre] += songDetails.Minutes_Listened;
}
else
{
genreCount.Add(song.Genre, songDetails.Minutes_Listened);
}
}
}
}
var sortedDict = from entry in genreCount orderby entry.Value descending select entry;
int count = 0;
foreach (KeyValuePair<String, int> entry in sortedDict)
{
switch(count)
{
case 0:
genre1.Text = entry.Key;
minutes1.Text = entry.Value.ToString();
percentage1.Text = ((entry.Value / totalMinutes) * 100).ToString();
break;
case 1:
genre2.Text = entry.Key;
minutes2.Text = entry.Value.ToString();
percentage2.Text = ((entry.Value / totalMinutes) * 100).ToString();
break;
case 2:
genre3.Text = entry.Key;
minutes3.Text = entry.Value.ToString();
percentage3.Text = ((entry.Value / totalMinutes) * 100).ToString();
break;
}
if(count ==2)
{
break;
}
count++;
}
}
public void top3SubGenres(int month, int year, Label genre1, Label minutes1, Label percentage1, Label genre2, Label minutes2, Label percentage2, Label genre3, Label minutes3, Label percentage3) {
Dictionary<String, int> subgenreCount = new Dictionary<String, int>();
int totalMinutes = 0;
foreach (SongBasicDetails song in SongRepo.GetAll())
{
foreach (SongRecommendationDetails songDetails in SongRecommendationRepo.GetAll())
{
if (songDetails.Song_Id == song.Song_Id && songDetails.Month == month && songDetails.Year == year)
{
totalMinutes += songDetails.Minutes_Listened;
if (subgenreCount.ContainsKey(song.Subgenre))
{
subgenreCount[song.Subgenre] += songDetails.Minutes_Listened;
}
else
{
subgenreCount.Add(song.Subgenre, songDetails.Minutes_Listened);
}
}
}
}
var sortedDict = from entry in subgenreCount orderby entry.Value descending select entry;
int count = 0;
foreach (KeyValuePair<String, int> entry in sortedDict)
{
switch (count)
{
case 0:
genre1.Text = entry.Key;
minutes1.Text = entry.Value.ToString();
percentage1.Text = ((entry.Value / totalMinutes) * 100).ToString();
break;
case 1:
genre2.Text = entry.Key;
minutes2.Text = entry.Value.ToString();
percentage2.Text = ((entry.Value / totalMinutes) * 100).ToString();
break;
case 2:
genre3.Text = entry.Key;
minutes3.Text = entry.Value.ToString();
percentage3.Text = ((entry.Value / totalMinutes) * 100).ToString();
break;
}
if (count == 2)
{
break;
}
count++;
count++;
}
}
}
}