added multi day raids

This commit is contained in:
Sarah Faey 2023-02-14 20:18:45 +01:00
parent 00a038ae15
commit 922bef0ddf
6 changed files with 131 additions and 25 deletions

View file

@ -69,11 +69,36 @@
<p> <p>
<label> <label>
Date: <InputCheckbox @bind-Value="_isMultiDay" />
<InputDate @bind-Value="_raidDate" /> Multi day raid
</label> </label>
</p> </p>
@if(_isMultiDay)
{
<p>
<label>
Start date:
<InputDate @bind-Value="_raidDate" />
</label>
</p>
<p>
<label>
End date:
<InputDate @bind-Value="_endDate" />
</label>
</p>
}
else
{
<p>
<label>
Date:
<InputDate @bind-Value="_raidDate" />
</label>
</p>
}
<p> <p>
<label> <label>
Start Time: Start Time:
@ -209,7 +234,9 @@
private string _errorMessage = string.Empty; private string _errorMessage = string.Empty;
private int _randomSpots = 10; private int _randomSpots = 10;
private bool _isMultiDay = false;
private DateTimeOffset _raidDate = DateTime.Now.Date; private DateTimeOffset _raidDate = DateTime.Now.Date;
private DateTimeOffset _endDate = DateTime.Now.Date;
private DateTimeOffset _startTime; private DateTimeOffset _startTime;
private DateTimeOffset _endTime; private DateTimeOffset _endTime;
private DateTimeOffset _freeForAllDate = DateTime.Now.Date; private DateTimeOffset _freeForAllDate = DateTime.Now.Date;
@ -260,10 +287,12 @@
_startTime = await TimeZoneService.GetLocalDateTime(_raid.StartTimeUTC); _startTime = await TimeZoneService.GetLocalDateTime(_raid.StartTimeUTC);
_endTime = await TimeZoneService.GetLocalDateTime(_raid.EndTimeUTC); _endTime = await TimeZoneService.GetLocalDateTime(_raid.EndTimeUTC);
_raidDate = _startTime.Date; _raidDate = _startTime.Date;
_endDate = _endTime.Date;
_freeForAllTime = await TimeZoneService.GetLocalDateTime(_raid.FreeForAllTimeUTC); _freeForAllTime = await TimeZoneService.GetLocalDateTime(_raid.FreeForAllTimeUTC);
_freeForAllDate = _freeForAllTime.Date; _freeForAllDate = _freeForAllTime.Date;
_minUserDeadlineTime = await TimeZoneService.GetLocalDateTime(_raid.MinUserDeadLineUTC); _minUserDeadlineTime = await TimeZoneService.GetLocalDateTime(_raid.MinUserDeadLineUTC);
_minUserDeadlineDate = _minUserDeadlineTime.Date; _minUserDeadlineDate = _minUserDeadlineTime.Date;
_isMultiDay = _endTime - _startTime > new TimeSpan(24,0,0);
foreach(RaidReminder reminder in _raid.Reminders) foreach(RaidReminder reminder in _raid.Reminders)
{ {
if(reminder.TimeType == RaidReminder.ReminderTimeType.Static) if(reminder.TimeType == RaidReminder.ReminderTimeType.Static)
@ -351,8 +380,18 @@
return; return;
} }
if(_isMultiDay && _endDate <= _raidDate)
{
_errorMessage = "The end date has to be after the start date.";
return;
}
_raid.StartTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date + _startTime.TimeOfDay); _raid.StartTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date + _startTime.TimeOfDay);
if(_startTime.TimeOfDay <= _endTime.TimeOfDay) if(_isMultiDay)
{
_raid.EndTimeUTC = await TimeZoneService.GetUTCDateTime(_endDate.Date + _endTime.TimeOfDay);
}
else if(_startTime.TimeOfDay <= _endTime.TimeOfDay)
{ {
_raid.EndTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date + _endTime.TimeOfDay); _raid.EndTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date + _endTime.TimeOfDay);
} }

View file

@ -71,11 +71,36 @@
<p> <p>
<label> <label>
Date: <InputCheckbox @bind-Value="_isMultiDay" />
<InputDate @bind-Value="_raidDate" /> Multi day raid
</label> </label>
</p> </p>
@if(_isMultiDay)
{
<p>
<label>
Start date:
<InputDate @bind-Value="_raidDate" />
</label>
</p>
<p>
<label>
End date:
<InputDate @bind-Value="_endDate" />
</label>
</p>
}
else
{
<p>
<label>
Date:
<InputDate @bind-Value="_raidDate" />
</label>
</p>
}
<p> <p>
<label> <label>
Start Time: Start Time:
@ -237,7 +262,9 @@
private string _errorMessage = string.Empty; private string _errorMessage = string.Empty;
private int _randomSpots = 10; private int _randomSpots = 10;
private bool _isMultiDay = false;
private DateTimeOffset _raidDate = DateTime.Now.Date; private DateTimeOffset _raidDate = DateTime.Now.Date;
private DateTimeOffset _endDate = DateTime.Now.Date;
private DateTimeOffset _startTime; private DateTimeOffset _startTime;
private DateTimeOffset _endTime; private DateTimeOffset _endTime;
private DateTimeOffset _freeForAllDate = DateTime.Now.Date; private DateTimeOffset _freeForAllDate = DateTime.Now.Date;
@ -294,10 +321,12 @@
_startTime = _template.StartTime; _startTime = _template.StartTime;
_endTime = _template.EndTime; _endTime = _template.EndTime;
_raidDate = _startTime.Date; _raidDate = _startTime.Date;
_endDate = _endTime.Date;
_freeForAllTime = _template.FreeForAllTime; _freeForAllTime = _template.FreeForAllTime;
_freeForAllDate = _freeForAllTime.Date; _freeForAllDate = _freeForAllTime.Date;
_minUserDeadlineTime = _template.MinUserDeadLine; _minUserDeadlineTime = _template.MinUserDeadLine;
_minUserDeadlineDate = _minUserDeadlineTime.Date; _minUserDeadlineDate = _minUserDeadlineTime.Date;
_isMultiDay = _endTime - _startTime > new TimeSpan(24,0,0);
foreach(RaidReminder reminder in _template.Reminders) foreach(RaidReminder reminder in _template.Reminders)
{ {
if(reminder.TimeType == RaidReminder.ReminderTimeType.Static) if(reminder.TimeType == RaidReminder.ReminderTimeType.Static)
@ -378,10 +407,20 @@
return; return;
} }
if(_isMultiDay && _endDate <= _raidDate)
{
_errorMessage = "The end date has to be after the start date.";
return;
}
_template.TimeZone = await TimeZoneService.GetUserTimeZone(); _template.TimeZone = await TimeZoneService.GetUserTimeZone();
_template.StartTime =_raidDate.Date + _startTime.TimeOfDay; _template.StartTime =_raidDate.Date + _startTime.TimeOfDay;
if(_startTime.TimeOfDay <= _endTime.TimeOfDay) if(_isMultiDay)
{
_template.EndTime = _endDate.Date + _endTime.TimeOfDay;
}
else if(_startTime.TimeOfDay <= _endTime.TimeOfDay)
{ {
_template.EndTime = _raidDate.Date + _endTime.TimeOfDay; _template.EndTime = _raidDate.Date + _endTime.TimeOfDay;
} }

View file

@ -41,14 +41,28 @@
<span class="timesblock"> <span class="timesblock">
<span class="times"> @if(_endTime - _startTime > new TimeSpan(24,0,0))
<h5>Date</h5> {
<p>@_startTime.DateTime.ToLongDateString()</p> <span class="times">
</span> <h5>From</h5>
<span class="times"> <p>@_startTime.DateTime.ToLongDateString() @_startTime.DateTime.ToShortTimeString()</p>
<h5>Time</h5> </span>
<p>from: @_startTime.DateTime.ToShortTimeString() to: @_endTime.DateTime.ToShortTimeString()</p> <span class="times">
</span> <h5>To</h5>
<p>@_endTime.DateTime.ToLongDateString() @_endTime.DateTime.ToShortTimeString()</p>
</span>
}
else
{
<span class="times">
<h5>Date</h5>
<p>@_startTime.DateTime.ToLongDateString()</p>
</span>
<span class="times">
<h5>Time</h5>
<p>from: @_startTime.DateTime.ToShortTimeString() to: @_endTime.DateTime.ToShortTimeString()</p>
</span>
}
<span class="times"> <span class="times">
<h5>Type</h5> <h5>Type</h5>
<p>@_raid.EventType</p> <p>@_raid.EventType</p>

View file

@ -17,7 +17,7 @@ h5 {
.times { .times {
display: inline-block; display: inline-block;
width: 250px; width: 270px;
padding-top: 15px; padding-top: 15px;
} }

View file

@ -16,14 +16,28 @@
<label style="white-space: pre-line">@_template.Description</label> <label style="white-space: pre-line">@_template.Description</label>
<span class="timesblock"> <span class="timesblock">
<div class="times"> @if(_template.EndTime - _template.StartTime > new TimeSpan(24,0,0))
<h5>Date</h5> {
<p>@_template.StartTime.ToLongDateString()</p> <span class="times">
</div> <h5>From</h5>
<div class="times"> <p>@_template.StartTime.ToLongDateString() @_template.StartTime.ToShortTimeString()</p>
<h5>Time</h5> </span>
<p>from: @_template.StartTime.ToShortTimeString() to: @_template.EndTime.ToShortTimeString()</p> <span class="times">
</div> <h5>To</h5>
<p>@_template.EndTime.ToLongDateString() @_template.EndTime.ToShortTimeString()</p>
</span>
}
else
{
<div class="times">
<h5>Date</h5>
<p>@_template.StartTime.ToLongDateString()</p>
</div>
<div class="times">
<h5>Time</h5>
<p>from: @_template.StartTime.ToShortTimeString() to: @_template.EndTime.ToShortTimeString()</p>
</div>
}
<div class="times"> <div class="times">
<h5>TimeZone</h5> <h5>TimeZone</h5>
<p>@_template.TimeZone</p> <p>@_template.TimeZone</p>

View file

@ -18,7 +18,7 @@ h5 {
.times { .times {
display: inline-block; display: inline-block;
width: 250px; width: 270px;
padding-top: 15px; padding-top: 15px;
} }