public TicketMapperProfile() { CreateMap <Ticket, Models.Ticket>() .ForMember(e => e.Creator, opt => opt.MapFrom(e => e.Creator.Name)) .ForMember(e => e.Editor, opt => opt.MapFrom(e => e.Editor.Name)) .ForMember(e => e.Gender, opt => opt.MapFrom( e => e.Gender.HasValue ? e.Gender.Value.GetStringValue() : null)) .ReverseMap() .ForMember(e => e.Id, opt => opt.Ignore()) .ForMember(e => e.TicketSecret, opt => opt.Ignore()) .ForMember(e => e.Creator, opt => opt.Ignore()) .ForMember(e => e.Editor, opt => opt.Ignore()) .ForMember(e => e.Gender, opt => opt.MapFrom( e => GenderExtensions.FromStringValue(e.Gender))) .ForMember(e => e.BirthDate, opt => opt.MapFrom( e => e.BirthDate.HasValue ? (DateTime?)e.BirthDate.Value.ToLocalTime().Date : null)) .ForMember(e => e.PaymentStatus, opt => opt.SetMappingOrder(0)) .ForMember(e => e.PaymentStatus, opt => opt.MapFrom <PaymentStatusResolver>()) .ForMember(e => e.TicketTypeId, opt => opt.SetMappingOrder(1)) .ForMember(e => e.AmountPaid, opt => opt.SetMappingOrder(2)) .ForMember(e => e.TicketType, opt => opt.Ignore()); CreateMap <Ticket, Models.ConferenceDialogModel>() .ForMember(e => e.TicketId, opt => opt.MapFrom(e => e.Id)); }
public IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { if (EventId == Guid.Empty) { yield return(new ValidationResult( "The field is required.", new[] { nameof(EventId) })); } if (TicketTypeId == Guid.Empty) { yield return(new ValidationResult( "The field is required.", new[] { nameof(TicketTypeId) })); } if (Gender != null && GenderExtensions.FromStringValue(Gender) == null) { yield return(new ValidationResult( $"Gender '{Gender}' is not an allowed value. Allowed values: 'm' or 'f'.", new[] { nameof(Gender) })); } if (BookingDate != null && BookingDate > DateTime.UtcNow) { yield return(new ValidationResult( "The BookingDate must be in the past.", new[] { nameof(BookingDate) })); } }
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity <User>(entity => { entity.Property(e => e.Username).IsRequired().HasMaxLength(300); entity.HasIndex(e => e.Username).IsUnique(); entity.Property(e => e.EmailAddress).IsRequired().HasMaxLength(300); entity.HasIndex(e => e.EmailAddress).IsUnique(); entity.Property(e => e.Name).IsRequired().HasMaxLength(300); entity.Property(e => e.Role) .IsRequired() .HasMaxLength(300) .HasConversion( value => value.GetStringValue(), value => (UserRole)Enum.Parse(typeof(UserRole), value, true)); }); modelBuilder.Entity <Event>(entity => { entity.HasQueryFilter(e => !e.IsDeleted); entity.Property(e => e.Name).IsRequired().HasMaxLength(300); entity.Property(e => e.Location).IsRequired().HasMaxLength(300); entity.Property(e => e.HomepageUrl).IsRequired().HasMaxLength(2083); entity.Property(e => e.Host).IsRequired().HasMaxLength(300); entity.Property(e => e.Address).IsRequired().HasMaxLength(300); entity.Property(e => e.ZipCode).IsRequired().HasMaxLength(300); entity.Property(e => e.City).IsRequired().HasMaxLength(300); }); modelBuilder.Entity <TicketType>(entity => { entity.ToTable("TicketTypes"); entity.Property(e => e.Name).IsRequired().HasMaxLength(300); entity.Property(e => e.Price).HasColumnType("decimal(5, 2)"); entity.HasOne(e => e.Event) .WithMany(e => e.TicketTypes) .HasForeignKey(e => e.EventId); }); modelBuilder.Entity <Ticket>(entity => { entity.HasQueryFilter(e => !e.IsDeleted); entity.HasAlternateKey(e => e.TicketNumber); entity.HasAlternateKey(e => e.TicketSecret); entity.Property(e => e.TicketNumber).IsRequired().HasMaxLength(100); entity.Property(e => e.Mail).HasMaxLength(254); entity.Property(e => e.Phone).HasMaxLength(100); entity.Property(e => e.LastName).HasMaxLength(300); entity.Property(e => e.FirstName).HasMaxLength(300); entity.Property(e => e.Address).HasMaxLength(1000); entity.Property(e => e.RoomNumber).HasMaxLength(300); entity.Property(e => e.AmountPaid).HasColumnType("decimal(5, 2)"); entity.Property(e => e.Gender) .HasColumnType("nchar(1)") .HasConversion( value => value.HasValue ? value.Value.GetStringValue() : null, value => GenderExtensions.FromStringValue(value)); entity.Property(e => e.PaymentStatus) .IsRequired() .HasMaxLength(100) .HasConversion( value => value.GetStringValue(), value => (PaymentStatus)Enum.Parse(typeof(PaymentStatus), value, true)); entity.Property(e => e.DeliveryType) .HasMaxLength(100) .HasConversion( value => value.Value.GetStringValue(), value => (TicketDeliveryType)Enum.Parse(typeof(TicketDeliveryType), value, true)); entity.HasOne(e => e.Event) .WithMany(e => e.Tickets) .HasForeignKey(e => e.EventId) .OnDelete(DeleteBehavior.Restrict); entity.HasOne(e => e.TicketType) .WithMany(e => e.Tickets) .HasForeignKey(e => e.TicketTypeId) .OnDelete(DeleteBehavior.Restrict); entity.HasOne(e => e.Creator) .WithMany() .HasForeignKey(e => e.CreatorId); entity.HasOne(e => e.Editor) .WithMany() .HasForeignKey(e => e.EditorId); }); modelBuilder.Entity <MasterQrCode>(entity => { entity.ToTable("MasterQrCodes"); entity.HasOne(e => e.Owner) .WithMany(e => e.MasterQrCodes) .HasForeignKey(e => e.OwnerId) .OnDelete(DeleteBehavior.Restrict); entity.HasOne(e => e.Event) .WithMany() .HasForeignKey(e => e.EventId) .OnDelete(DeleteBehavior.Restrict); }); modelBuilder.Entity <Client>(entity => { entity.Property(e => e.Name).IsRequired().HasMaxLength(1000); entity.Property(e => e.Secret).IsRequired().HasMaxLength(1000); }); modelBuilder.Entity <MailSettings>(entity => { entity.ToTable("MailSettings"); entity.Property(e => e.SmtpHost).IsRequired().HasMaxLength(300); entity.Property(e => e.SmtpUsername).HasMaxLength(300); entity.Property(e => e.SmtpPassword).HasMaxLength(300); entity.Property(e => e.SenderAddress).IsRequired().HasMaxLength(300); entity.Property(e => e.Subject).IsRequired().HasMaxLength(300); entity.HasOne(e => e.Event) .WithOne(e => e.MailSettings) .HasForeignKey <Event>(e => e.MailSettingsId); entity.HasMany(e => e.DemoEmailRecipients) .WithOne() .HasForeignKey(e => e.MailSettingsId); }); modelBuilder.Entity <DemoEmailRecipient>(entity => { entity.ToTable("DemoEmailRecipients"); entity.Property(e => e.EmailAddress).IsRequired().HasMaxLength(300); }); modelBuilder.Entity <AuditEvent>(entity => { entity.ToTable("AuditEventLog"); entity.Property(e => e.Action).IsRequired().HasMaxLength(100); entity.Property(e => e.Detail).HasMaxLength(1000); entity.Property(e => e.Level) .IsRequired() .HasMaxLength(100) .HasConversion( value => value.GetStringValue(), value => (AuditEventLevel)Enum.Parse(typeof(AuditEventLevel), value, true)); entity.HasOne(e => e.Ticket) .WithMany() .HasForeignKey(e => e.TicketId); }); }