Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -367,4 +367,5 @@ FodyWeavers.xsd
*/**/bin/Debug
*/**/bin/Release
*/**/obj/Debug
*/**/obj/Release
*/**/obj/Release
*/Migrations
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace api_cinema_challenge.DTO.Request
{
public class CustomerPost
{
public string Name { get; set; }
public string Email { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace api_cinema_challenge.DTO.Request
{
public class CustomerPut
{
public string? Name { get; set; }
public string? Email { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace api_cinema_challenge.DTO.Request
{
public class MoviePost
{
public string Name { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace api_cinema_challenge.DTO.Request
{
public class MoviePut
{
public string? Name { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace api_cinema_challenge.DTO.Request
{
public class ScreeningPost
{
public DateTime Time { get; set; }
public int MovieId { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace api_cinema_challenge.DTO.Request
{
public class ScreeningPut
{
public DateTime? Time { get; set; }
public int? MovieId { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace api_cinema_challenge.DTO.Request
{
public class TicketPost
{
public int CustomerId { get; set; }
public int SceeringId { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace api_cinema_challenge.DTO.Request
{
public class TicketPut
{
public int? CustomerId { get; set; }
public int? SceeringId { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace api_cinema_challenge.DTO.Response
{
public class CustomerDTO
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public List<TicketCustomerDTO> Tickets { get; set; } = new List<TicketCustomerDTO>();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace api_cinema_challenge.DTO.Response
{
public class MovieDTO
{
public int Id { get; set; }
public string Name { get; set; }
public List<ScreeningMovieDTO> Screenings { get; set; } = new List<ScreeningMovieDTO>();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace api_cinema_challenge.DTO.Response
{
public class ScreeningDTO
{
public int Id { get; set; }
public DateTime Time { get; set; }
public string MovieName { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace api_cinema_challenge.DTO.Response
{
public class ScreeningMovieDTO
{
public int Id { get; set; }
public DateTime Time { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace api_cinema_challenge.DTO.Response
{
public class TicketCustomerDTO
{
public int Id { get; set; }
public string ScreeningMovie { get; set; }
public DateTime ScreeningTime { get; set; }

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace api_cinema_challenge.DTO.Response
{
public class TicketDTO
{
public int Id { get; set; }
public string CustomerName { get; set; }
public string SceeringMovie { get; set; }
public DateTime SceeringTime { get; set; }

}
}
14 changes: 7 additions & 7 deletions api-cinema-challenge/api-cinema-challenge/Data/CinemaContext.cs
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
using Microsoft.EntityFrameworkCore;
using api_cinema_challenge.Models;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json.Linq;

namespace api_cinema_challenge.Data
{
public class CinemaContext : DbContext
{
private string _connectionString;
public CinemaContext(DbContextOptions<CinemaContext> options) : base(options)
public CinemaContext()
{
var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
_connectionString = configuration.GetValue<string>("ConnectionStrings:DefaultConnectionString")!;
this.Database.EnsureCreated();
}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql(_connectionString);
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{

}
public DbSet<Customer> Customers { get; set; }
public DbSet<Movie> Movies { get; set; }
public DbSet<Screening> Screenings { get; set; }
public DbSet<Ticket> Tickets { get; set; }
}
}
50 changes: 50 additions & 0 deletions api-cinema-challenge/api-cinema-challenge/Data/Seeder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using api_cinema_challenge.Models;

namespace api_cinema_challenge.Data
{
public static class Seeder
{
public async static void SeedCinemaApi(this WebApplication app)
{
using (var db = new CinemaContext())
{
if (!db.Customers.Any())
{
db.Add(new Customer() { Name = "Nigel", Email = "nigel@gmail.com"});
db.Add(new Customer() { Name = "Dave", Email = "dave@gmail.com"});
db.Add(new Customer() { Name = "Tonnes", Email = "tonnes@gmail.com" });
await db.SaveChangesAsync();
}

if (!db.Movies.Any())
{
db.Add(new Movie() { Name = "Lord of the Rings" });
db.Add(new Movie() { Name = "Mission Impossible" });
db.Add(new Movie() { Name = "Harry Potter" });
await db.SaveChangesAsync();
}

if (!db.Screenings.Any())
{
db.Add(new Screening() { MovieId = 1, Time = DateTime.SpecifyKind(new DateTime(2025, 1, 25, 11, 30, 0), DateTimeKind.Utc) });
db.Add(new Screening() { MovieId = 2, Time = DateTime.SpecifyKind(new DateTime(2025, 1, 25, 15, 30, 0), DateTimeKind.Utc) });
db.Add(new Screening() { MovieId = 3, Time = DateTime.SpecifyKind(new DateTime(2025, 1, 25, 19, 30, 0), DateTimeKind.Utc) });
await db.SaveChangesAsync();
}

if (!db.Tickets.Any())
{
db.Add(new Ticket() { CustomerId = 1, SceeringId = 1 });
db.Add(new Ticket() { CustomerId = 3, SceeringId = 2 });
db.Add(new Ticket() { CustomerId = 1, SceeringId = 3 });
db.Add(new Ticket() { CustomerId = 2, SceeringId = 3 });
db.Add(new Ticket() { CustomerId = 2, SceeringId = 2 });
db.Add(new Ticket() { CustomerId = 3, SceeringId = 1 });
await db.SaveChangesAsync();
}


}
}
}
}
Loading