Veckomeny fixes to Date
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Elias Jansson
2025-10-21 21:09:44 +02:00
parent 80b0e825b2
commit 49d32b0854
3 changed files with 91 additions and 1 deletions

View File

@@ -27,6 +27,12 @@ namespace Aberwyn.Controllers
return View();
}
[Route("budget/elkostnad")]
public IActionResult Elkostnad()
{
return View();
}
// För fallback när ingen månad/år anges
[Route("budget")]

View File

@@ -358,7 +358,7 @@ namespace Aberwyn.Controllers
}
entry.Cook = cook;
entry.Date = FirstDateOfISOWeek(year, week).AddDays(day);
if (string.IsNullOrWhiteSpace(mealName))
{
switch (mealType.ToLower())
@@ -564,7 +564,21 @@ namespace Aberwyn.Controllers
private static DateTime FirstDateOfISOWeek(int year, int weekOfYear)
{
DateTime jan4 = new DateTime(year, 1, 4);
int daysOffset = DayOfWeek.Thursday - jan4.DayOfWeek;
DateTime firstThursday = jan4.AddDays(daysOffset);
var cal = System.Globalization.CultureInfo.CurrentCulture.Calendar;
int firstWeek = cal.GetWeekOfYear(firstThursday, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
if (firstWeek <= 1)
weekOfYear -= 1;
DateTime result = firstThursday.AddDays(weekOfYear * 7);
return result.AddDays(-3); // tillbaka till måndag
}

View File

@@ -0,0 +1,70 @@
@{
ViewData["Title"] = "Elkostnad";
}
<h2>Räkna ut elkostnad</h2>
<div class="form-section">
<div class="mb-2">
<label for="spotpris">Månadens spotpris (öre/kWh):</label>
<input type="number" id="spotpris" class="form-control" step="0.01" value="52.33" />
</div>
<div class="mb-2">
<label for="forbrukning">Förbrukning (kWh):</label>
<input type="number" id="forbrukning" class="form-control" value="350" />
</div>
<button type="button" class="btn btn-primary mt-2" onclick="berakna()">Beräkna</button>
</div>
<div id="resultat" class="alert alert-info mt-3" style="display:none;"></div>
@section Scripts {
<script>
function berakna() {
// Inputs
let spotprisOre = parseFloat(document.getElementById("spotpris").value) || 0;
let spotprisKr = spotprisOre / 100; // omvandling öre → kr
let forbrukning = parseFloat(document.getElementById("forbrukning").value) || 0;
// Elhandel fasta tillägg (kr/kWh)
const paslag = 0.029;
const rorliga = 0.0567;
const ursprung = 0.016;
// Elnät fasta avgifter (kr/kWh)
const eloverforing = 0.29;
const energiskatt = 0.439;
// Fasta avgifter per månad (kr)
const elhandelFast = 39.20;
const elnatFast = 335.00;
const fastSumma = elhandelFast + elnatFast;
// Rörliga priser
let elhandelPerKwh = spotprisKr + paslag + rorliga + ursprung;
let elnatPerKwh = eloverforing + energiskatt;
let totaltPerKwh = elhandelPerKwh + elnatPerKwh;
// Kostnader
let rorligt = forbrukning * totaltPerKwh;
let totalExMoms = rorligt + fastSumma;
let moms = totalExMoms * 0.25;
let totalInklMoms = totalExMoms + moms;
// Resultat
let resultat = document.getElementById("resultat");
resultat.style.display = "block";
resultat.innerHTML = `
<h4>Resultat</h4>
<p>Rörligt (Elhandel + Elnät): ${rorligt.toFixed(2)} kr</p>
<p>Fasta avgifter: ${fastSumma.toFixed(2)} kr</p>
<p>Moms (25%): ${moms.toFixed(2)} kr</p>
<hr />
<strong>Total kostnad: ${totalInklMoms.toFixed(2)} kr</strong><br />
<small>Snittpris: ${(totalInklMoms / forbrukning).toFixed(2)} kr/kWh</small>
`;
}
</script>
}