97 lines
3.3 KiB
C#
97 lines
3.3 KiB
C#
using InnovEnergy.App.Backend.DataTypes;
|
|
using InnovEnergy.App.Backend.Relations;
|
|
namespace InnovEnergy.App.Backend.Database;
|
|
|
|
|
|
public static partial class Db
|
|
{
|
|
//In this file, we provide all the methods that can be used in order to retrieve information from the database (read)
|
|
public static Folder? GetFolderById(Int64? id)
|
|
{
|
|
return Folders
|
|
.FirstOrDefault(f => f.Id == id);
|
|
}
|
|
|
|
public static Installation? GetInstallationById(Int64? id)
|
|
{
|
|
return Installations
|
|
.FirstOrDefault(i => i.Id == id);
|
|
}
|
|
|
|
public static UserAction? GetActionById(Int64? id)
|
|
{
|
|
return UserActions
|
|
.FirstOrDefault(i => i.Id == id);
|
|
}
|
|
|
|
public static User? GetUserById(Int64? id)
|
|
{
|
|
return Users
|
|
.FirstOrDefault(u => u.Id == id);
|
|
}
|
|
|
|
public static User? GetUserByEmail(String email)
|
|
{
|
|
return Users
|
|
.FirstOrDefault(u => u.Email == email);
|
|
}
|
|
|
|
public static Session? GetSession(String token)
|
|
{
|
|
//This method is called in almost every controller function.
|
|
//After logging in, the frontend receives a session object which contains a token. For all the future REST API calls, this token is used for session authentication.
|
|
var session = Sessions
|
|
.FirstOrDefault(s => s.Token == token);
|
|
|
|
if (session is null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
if (!session.Valid)
|
|
{
|
|
Delete(session);
|
|
return null;
|
|
}
|
|
|
|
return session;
|
|
}
|
|
|
|
// ── Report Queries ────────────────────────────────────────────────
|
|
|
|
public static List<WeeklyReportSummary> GetWeeklyReports(Int64 installationId)
|
|
=> WeeklyReports
|
|
.Where(r => r.InstallationId == installationId)
|
|
.OrderByDescending(r => r.PeriodStart)
|
|
.ToList();
|
|
|
|
public static List<WeeklyReportSummary> GetWeeklyReportsForMonth(Int64 installationId, Int32 year, Int32 month)
|
|
{
|
|
var monthStart = $"{year:D4}-{month:D2}-01";
|
|
var monthEnd = month == 12 ? $"{year + 1:D4}-01-01" : $"{year:D4}-{month + 1:D2}-01";
|
|
return WeeklyReports
|
|
.Where(r => r.InstallationId == installationId)
|
|
.ToList()
|
|
.Where(r => String.Compare(r.PeriodStart, monthStart, StringComparison.Ordinal) >= 0
|
|
&& String.Compare(r.PeriodStart, monthEnd, StringComparison.Ordinal) < 0)
|
|
.ToList();
|
|
}
|
|
|
|
public static List<MonthlyReportSummary> GetMonthlyReports(Int64 installationId)
|
|
=> MonthlyReports
|
|
.Where(r => r.InstallationId == installationId)
|
|
.OrderByDescending(r => r.Year)
|
|
.ThenByDescending(r => r.Month)
|
|
.ToList();
|
|
|
|
public static List<MonthlyReportSummary> GetMonthlyReportsForYear(Int64 installationId, Int32 year)
|
|
=> MonthlyReports
|
|
.Where(r => r.InstallationId == installationId && r.Year == year)
|
|
.ToList();
|
|
|
|
public static List<YearlyReportSummary> GetYearlyReports(Int64 installationId)
|
|
=> YearlyReports
|
|
.Where(r => r.InstallationId == installationId)
|
|
.OrderByDescending(r => r.Year)
|
|
.ToList();
|
|
} |