Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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) }));
            }
        }
Ejemplo n.º 3
0
        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);
            });
        }