Files
TaskHybrid/Template.Shared/Components/SingleElements/Card/ActivityCard.razor

85 lines
3.2 KiB
Plaintext

@using Template.Shared.Core.Dto
@using Template.Shared.Core.Helpers.Enum
<div class="activity-card @Activity.Category.ConvertToHumanReadable()" @onclick="() => OpenActivityForm(Activity.ActivityId)">
<div class="activity-left-section">
<div class="activity-body-section">
<div class="title-section">
<MudText Class="activity-title" Typo="Typo.body1" HtmlTag="h3">
@switch (Activity.Category)
{
case ActivityCategoryEnum.Commessa:
@Activity.Commessa
break;
case ActivityCategoryEnum.Interna:
@Activity.Cliente
break;
case ActivityCategoryEnum.Memo:
@Activity.ActivityDescription
break;
default:
@("")
break;
}
</MudText>
<div class="activity-hours-section">
<span class="activity-hours">
@if (Activity.EffectiveTime is null)
{
@($"{Activity.EstimatedTime:t}")
}
else
{
@($"{Activity.EffectiveTime:t}")
}
</span>
</div>
</div>
@if (Activity.Category != ActivityCategoryEnum.Memo)
{
<MudText Class="activity-subtitle" Typo="Typo.body1" HtmlTag="p">@Activity.ActivityDescription</MudText>
}
</div>
</div>
<div class="activity-info-section">
@if (Durata != null && (Durata.Value.TotalHours > 0 || Durata.Value.Minutes > 0))
{
var ore = (int)Durata.Value.TotalHours;
var minuti = Durata.Value.Minutes;
<MudChip T="string" Icon="@IconConstants.Chip.Time" Color="Color.Dark" Size="Size.Small">
@(ore > 0 ? $"{ore}h{(minuti > 0 ? $" {minuti}m" : "")}" : $"{minuti}m")
</MudChip>
}
@if (Activity.ActivityResultId != null)
{
<MudChip T="string" Icon="@IconConstants.Chip.Stato" Size="Size.Small" Color="Color.Success">@Activity.ActivityResultId</MudChip>
}
<MudChip T="string" Icon="@IconConstants.Chip.User" Size="Size.Small">@Activity.UserName</MudChip>
</div>
</div>
@code {
[Parameter] public ActivityDTO Activity { get; set; } = new();
private TimeSpan? Durata { get; set; }
protected override void OnInitialized()
{
Durata = Activity switch
{
{ EffectiveTime: not null, EffectiveEndtime: not null } => Activity.EffectiveEndtime.Value - Activity.EffectiveTime.Value,
{ EstimatedTime: not null, EstimatedEndtime: not null } => Activity.EstimatedEndtime.Value - Activity.EstimatedTime.Value,
_ => null
};
}
private void OpenActivityForm(string? activityId)
{
var url = "/activity";
url = !activityId.IsNullOrEmpty() ? $"{url}/{activityId}" : url;
NavigationManager.NavigateTo(url);
}
}