PlanTempusApp/PlanTempus.Application/Features/Customers/Components/CustomerDetailAppointments/CustomerDetailAppointmentsViewComponent.cs

99 lines
3.6 KiB
C#
Raw Normal View History

using Microsoft.AspNetCore.Mvc;
using PlanTempus.Application.Features.Localization.Services;
using System.Globalization;
namespace PlanTempus.Application.Features.Customers.Components;
public class CustomerDetailAppointmentsViewComponent : ViewComponent
{
private readonly ILocalizationService _localization;
public CustomerDetailAppointmentsViewComponent(ILocalizationService localization)
{
_localization = localization;
}
public IViewComponentResult Invoke(string customerId)
{
var customer = CustomerDetailCatalog.Get(customerId);
var culture = new CultureInfo("da-DK");
var model = new CustomerDetailAppointmentsViewModel
{
UpcomingTitle = "Kommende aftaler",
HistoryTitle = "Tidligere aftaler",
MoveButtonText = "Flyt",
CancelButtonText = "Aflys",
SeeAllText = "Se alle aftaler ->",
DateHeader = "Dato",
ServiceHeader = "Service",
HairdresserHeader = "Frisor",
DurationHeader = "Varighed",
PriceHeader = "Pris",
Upcoming = customer.Appointments.Upcoming.Select(a =>
{
var dateText = a.Date;
if (DateTime.TryParse(a.Date, out var date))
{
dateText = date.ToString("dddd d. MMMM yyyy", culture);
dateText = char.ToUpper(dateText[0]) + dateText[1..];
}
return new UpcomingAppointmentViewModel
{
FormattedDate = $"{dateText} kl. {a.Time}",
Details = $"{a.Service} - {a.Hairdresser} - {a.Duration}"
};
}).ToList(),
History = customer.Appointments.History.Select(a =>
{
var dateText = a.Date;
if (DateTime.TryParse(a.Date, out var date))
{
dateText = date.ToString("d. MMM yyyy", culture);
}
return new HistoryAppointmentViewModel
{
FormattedDate = dateText,
Service = a.Service,
Hairdresser = a.Hairdresser,
Duration = a.Duration,
FormattedPrice = $"{a.Price:N0} kr".Replace(",", ".")
};
}).ToList()
};
return View(model);
}
}
public class CustomerDetailAppointmentsViewModel
{
public required string UpcomingTitle { get; init; }
public required string HistoryTitle { get; init; }
public required string MoveButtonText { get; init; }
public required string CancelButtonText { get; init; }
public required string SeeAllText { get; init; }
public required string DateHeader { get; init; }
public required string ServiceHeader { get; init; }
public required string HairdresserHeader { get; init; }
public required string DurationHeader { get; init; }
public required string PriceHeader { get; init; }
public List<UpcomingAppointmentViewModel> Upcoming { get; init; } = new();
public List<HistoryAppointmentViewModel> History { get; init; } = new();
}
public class UpcomingAppointmentViewModel
{
public required string FormattedDate { get; init; }
public required string Details { get; init; }
}
public class HistoryAppointmentViewModel
{
public required string FormattedDate { get; init; }
public required string Service { get; init; }
public required string Hairdresser { get; init; }
public required string Duration { get; init; }
public required string FormattedPrice { get; init; }
}