using Microsoft.EntityFrameworkCore; using WebApp.DTOs; using WebApp.Entities; namespace WebApp.Mapping; public static class EventMapping { public static Event ToEntity(this EventCreateDto ECDto) { return new Event() { Title = ECDto.Title, Description = ECDto.Description, Location = ECDto.Location, EventDate = DateTime.SpecifyKind(ECDto.EventDate!.Value, DateTimeKind.Utc), EventSkills = ECDto.EventSkills, EventRegistrations = [] }; } public static Event ToEntity(this EventUpdateDto EUDto, int id) { return new Event() { EventId = id, Title = EUDto.Title, Description = EUDto.Description, Location = EUDto.Location, EventDate = DateTime.SpecifyKind(EUDto.EventDate!.Value, DateTimeKind.Utc), EventSkills = EUDto.EventSkills }; } public static EventSummaryDto ToEventSummaryDto(this Event myEvent) { List ssdto = new List(); List erdto = new List(); foreach (EventSkill es in myEvent.EventSkills) { ssdto.Add(es.ToSkillSummaryDto()); } foreach (EventRegistration er in myEvent.EventRegistrations) { erdto.Add(er.ToEventRegistrationDto()); } return new EventSummaryDto { EventId = myEvent.EventId, Organisation = myEvent.Organisation!.Name, OrganisationId = myEvent.OrganisationId, Title = myEvent.Title, Description = myEvent.Description ?? "", Location = myEvent.Location, EventDate = myEvent.EventDate, EventSkills = ssdto, EventRegistrations = erdto }; } public static EventSummaryNoErDto ToEventSummaryNoErDto(this Event myEvent) { return new EventSummaryNoErDto( myEvent.EventId, myEvent.Organisation!.Name, myEvent.OrganisationId, myEvent.Title, myEvent.Description ?? "", myEvent.Location, myEvent.EventDate, myEvent.EventSkills ); } public static EventRegistrationDto ToEventRegistrationDto(this EventRegistration myER) { return new EventRegistrationDto { EventId = myER.EventId, UserId = myER.UserId, UserName = myER.User!.FirstName + " " + myER.User!.LastName, RegisteredAt = myER.RegisteredAt }; } public static EventDetailsDto ToEventDetailsDto(this Event myEvent) { List ssdto = new List(); List erdto = new List(); foreach (EventSkill es in myEvent.EventSkills) { ssdto.Add(es.ToSkillSummaryDto()); } foreach (EventRegistration er in myEvent.EventRegistrations) { erdto.Add(er.ToEventRegistrationDto()); } return new EventDetailsDto { EventId = myEvent.EventId, OrganisationId = myEvent.OrganisationId, OrganisationName = myEvent.Organisation!.Name, Title = myEvent.Title, Description = myEvent.Description ?? "", Location = myEvent.Location, EventDate = myEvent.EventDate, EventSkills = ssdto, EventRegistrations = erdto }; } }