Added TimeZone Functionality
This commit is contained in:
parent
c298f4d20e
commit
c215ed058f
9 changed files with 129 additions and 48 deletions
|
@ -4,6 +4,7 @@
|
|||
@using Lieb.Models.GuildWars2.Raid
|
||||
@inject UserService UserService
|
||||
@inject RaidService RaidService
|
||||
@inject TimeZoneService TimeZoneService
|
||||
@inject RaidRandomizerService RaidRandomizerService
|
||||
|
||||
<body>
|
||||
|
@ -17,11 +18,11 @@
|
|||
<div >
|
||||
<div class="times">
|
||||
<h5>Date</h5>
|
||||
<p>@_raid.Date.ToLongDateString()</p>
|
||||
<p>@_startTime.DateTime.ToLongDateString()</p>
|
||||
</div>
|
||||
<div class="times">
|
||||
<h5>Time</h5>
|
||||
<p>from: @_raid.StartTime.LocalDateTime.ToShortTimeString() to: @_raid.EndTime.LocalDateTime.ToShortTimeString()</p>
|
||||
<p>from: @_startTime.LocalDateTime.ToShortTimeString() to: @_endTime.LocalDateTime.ToShortTimeString()</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -72,7 +73,6 @@
|
|||
</body>
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public Raid _raid { get; set; }
|
||||
|
||||
|
@ -83,9 +83,17 @@
|
|||
|
||||
string _errorMessage;
|
||||
|
||||
private DateTimeOffset _startTime;
|
||||
private DateTimeOffset _endTime;
|
||||
private DateTimeOffset _freeForAllTime;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
_isRaidSignUpAllowed = _user != null && RaidService.IsRaidSignUpAllowed(_user.LiebUserId, _raid.RaidId, out string _errorMessage);
|
||||
|
||||
_startTime = await TimeZoneService.GetLocalDateTime(_raid.StartTimeUTC);
|
||||
_endTime = await TimeZoneService.GetLocalDateTime(_raid.EndTimeUTC);
|
||||
_freeForAllTime = await TimeZoneService.GetLocalDateTime(_raid.FreeForAllTimeUTC);
|
||||
}
|
||||
|
||||
async Task SignUpClicked(PlannedRaidRole role, LiebUser liebUser, bool isSignedUp, SignUpType signUpType)
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
@using Lieb.Models.GuildWars2.Raid
|
||||
@using System.ComponentModel.DataAnnotations
|
||||
@inject RaidService RaidService
|
||||
@inject TimeZoneService TimeZoneService
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject IJSRuntime JsRuntime
|
||||
|
||||
|
@ -13,7 +14,6 @@
|
|||
<AuthorizeView Policy="@Constants.Roles.RaidLead" Context="authorizationContext">
|
||||
<EditForm Model="@_raid" OnValidSubmit="@HandleValidSubmit">
|
||||
<DataAnnotationsValidator />
|
||||
<ValidationSummary />
|
||||
@{
|
||||
bool _isEdit = _raid.RaidId != 0;
|
||||
}
|
||||
|
@ -44,20 +44,20 @@
|
|||
<p>
|
||||
<label>
|
||||
Date:
|
||||
<InputDate @bind-Value="_raid.Date" />
|
||||
<InputDate @bind-Value="_raidDate" />
|
||||
</label>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label>
|
||||
Start Time:
|
||||
<input type="time" @bind="@_raid.StartTime" />
|
||||
<input type="time" @bind="_startTime" />
|
||||
</label>
|
||||
</p>
|
||||
<p>
|
||||
<label>
|
||||
End Time:
|
||||
<input type="time" @bind="@_raid.EndTime" />
|
||||
<input type="time" @bind="_endTime" />
|
||||
</label>
|
||||
</p>
|
||||
|
||||
|
@ -109,7 +109,9 @@
|
|||
</table>
|
||||
</p>
|
||||
}
|
||||
|
||||
|
||||
<ValidationSummary />
|
||||
<label class="validation-message" >@_errosMessage</label>
|
||||
<button type="submit">Submit</button>
|
||||
|
||||
</EditForm>
|
||||
|
@ -124,12 +126,26 @@
|
|||
|
||||
public Raid _raid;
|
||||
|
||||
private string _errosMessage = string.Empty;
|
||||
|
||||
private DateTimeOffset _raidDate = DateTime.Now.Date;
|
||||
private DateTimeOffset _startTime;
|
||||
private DateTimeOffset _endTime;
|
||||
private DateTimeOffset _freeForAllDate = DateTime.Now.Date;
|
||||
private DateTimeOffset _freeForAllTime;
|
||||
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
if(!string.IsNullOrEmpty(raidId) && int.TryParse(raidId, out int parsedId))
|
||||
{
|
||||
_raid = RaidService.GetRaid(parsedId);
|
||||
_startTime = await TimeZoneService.GetLocalDateTime(_raid.StartTimeUTC);
|
||||
_endTime = await TimeZoneService.GetLocalDateTime(_raid.EndTimeUTC);
|
||||
_raidDate = _startTime.Date;
|
||||
_freeForAllTime = await TimeZoneService.GetLocalDateTime(_raid.FreeForAllTimeUTC);
|
||||
_freeForAllDate = _freeForAllTime.Date;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -160,8 +176,9 @@
|
|||
|
||||
private async Task HandleValidSubmit()
|
||||
{
|
||||
if(_raid.RaidType != RaidType.Planned && _raid.Roles.Count == 0)
|
||||
if(_raid.RaidType != RaidType.Planned)
|
||||
{
|
||||
_raid.Roles.Clear();
|
||||
_raid.Roles.Add(new PlannedRaidRole()
|
||||
{
|
||||
Spots = 10,
|
||||
|
@ -170,6 +187,25 @@
|
|||
});
|
||||
}
|
||||
|
||||
if(_raid.Roles.Count == 0)
|
||||
{
|
||||
_errosMessage = "Roles are needed for a raid.";
|
||||
return;
|
||||
}
|
||||
|
||||
_raid.TimeZone = await TimeZoneService.GetUserTimeZone();
|
||||
|
||||
_raid.StartTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date + _startTime.TimeOfDay);
|
||||
if(_startTime.TimeOfDay > _endTime.TimeOfDay)
|
||||
{
|
||||
_raid.EndTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date + _endTime.TimeOfDay);
|
||||
}
|
||||
else
|
||||
{
|
||||
_raid.EndTimeUTC = await TimeZoneService.GetUTCDateTime(_raidDate.Date.AddDays(1) + _endTime.TimeOfDay);
|
||||
}
|
||||
_raid.FreeForAllTimeUTC = await TimeZoneService.GetUTCDateTime(_freeForAllDate.Date + _freeForAllTime.TimeOfDay);
|
||||
|
||||
await RaidService.AddOrEditRaid(_raid);
|
||||
NavigationManager.NavigateTo("raidoverview");
|
||||
}
|
||||
|
|
|
@ -7,3 +7,14 @@
|
|||
|
||||
@(await Html.RenderComponentAsync<App>(RenderMode.Server))
|
||||
<!--<component type="typeof(App)" render-mode="ServerPrerendered" />-->
|
||||
<script>
|
||||
function GetTimezoneValue() {
|
||||
// Returns the time difference in minutes between UTC time and local time.
|
||||
return new Date().getTimezoneOffset();
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function GetTimezone() {
|
||||
return new Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||
}
|
||||
</script>
|
|
@ -1,18 +0,0 @@
|
|||
<environment names="Development">
|
||||
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
|
||||
</environment>
|
||||
<environment names="Staging,Production">
|
||||
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.17.0/jquery.validate.min.js"
|
||||
asp-fallback-src="~/lib/jquery-validation/dist/jquery.validate.min.js"
|
||||
asp-fallback-test="window.jQuery && window.jQuery.validator"
|
||||
crossorigin="anonymous"
|
||||
integrity="sha384-rZfj/ogBloos6wzLGpPkkOr/gpkBNLZ6b6yLy4o+ok+t/SAKlL5mvXLr0OXNi1Hp">
|
||||
</script>
|
||||
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.9/jquery.validate.unobtrusive.min.js"
|
||||
asp-fallback-src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
|
||||
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive"
|
||||
crossorigin="anonymous"
|
||||
integrity="sha384-ifv0TYDWxBHzvAk2Z0n8R434FL1Rlv/Av18DXE43N/1rvHyOG4izKst0f2iSLdds">
|
||||
</script>
|
||||
</environment>
|
Loading…
Add table
Add a link
Reference in a new issue