seperated out start and end date and time into seprate date and time fields

This commit is contained in:
2026-07-25 15:59:46 -05:00
parent 5517924259
commit 1b478cd7ba
7 changed files with 712 additions and 6 deletions
@@ -0,0 +1,294 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using barkmanapi;
#nullable disable
namespace barkmanapi.Migrations
{
[DbContext(typeof(BarkContext))]
[Migration("20260725205242_change_datetimeoffset_to_datetime")]
partial class change_datetimeoffset_to_datetime
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.1")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("barkmanapi.Customers", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Address")
.HasColumnType("text")
.HasColumnName("address");
b.Property<string>("BillingTerms")
.HasColumnType("text")
.HasColumnName("billing_terms");
b.Property<string>("Company")
.HasColumnType("text")
.HasColumnName("company");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("text")
.HasColumnName("email");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Notes")
.HasColumnType("text")
.HasColumnName("notes");
b.Property<string>("PhoneNumber")
.HasColumnType("text")
.HasColumnName("phone_number");
b.HasKey("Id")
.HasName("pk_customers");
b.ToTable("customers", (string)null);
});
modelBuilder.Entity("barkmanapi.InventoryItems", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Barcode")
.IsRequired()
.HasColumnType("text")
.HasColumnName("barcode");
b.Property<string>("Brand")
.IsRequired()
.HasColumnType("text")
.HasColumnName("brand");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Notes")
.HasColumnType("text")
.HasColumnName("notes");
b.Property<float?>("RentalPrice")
.HasColumnType("real")
.HasColumnName("rental_price");
b.Property<float?>("ReplacementCost")
.HasColumnType("real")
.HasColumnName("replacement_cost");
b.Property<string>("SerialNumber")
.HasColumnType("text")
.HasColumnName("serial_number");
b.Property<string>("StatusId")
.HasColumnType("text")
.HasColumnName("status_id");
b.Property<float?>("Weight")
.HasColumnType("real")
.HasColumnName("weight");
b.HasKey("Id")
.HasName("pk_inventory");
b.HasIndex("Barcode")
.IsUnique()
.HasDatabaseName("ix_inventory_barcode");
b.HasIndex("StatusId")
.HasDatabaseName("ix_inventory_status_id");
b.ToTable("inventory", (string)null);
});
modelBuilder.Entity("barkmanapi.ItemStatus", b =>
{
b.Property<string>("Id")
.HasColumnType("text")
.HasColumnName("id");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_item_status");
b.ToTable("item_status", (string)null);
});
modelBuilder.Entity("barkmanapi.JobItems", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("ItemId")
.IsRequired()
.HasColumnType("text")
.HasColumnName("item_id");
b.Property<string>("JobId")
.IsRequired()
.HasColumnType("text")
.HasColumnName("job_id");
b.Property<int?>("JobsId")
.HasColumnType("integer")
.HasColumnName("jobs_id");
b.Property<int>("Quantity")
.HasColumnType("integer")
.HasColumnName("quantity");
b.HasKey("Id")
.HasName("pk_job_items");
b.HasIndex("JobsId")
.HasDatabaseName("ix_job_items_jobs_id");
b.ToTable("job_items", (string)null);
});
modelBuilder.Entity("barkmanapi.JobStatus", b =>
{
b.Property<string>("Id")
.HasColumnType("text")
.HasColumnName("id");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_job_status");
b.ToTable("job_status", (string)null);
});
modelBuilder.Entity("barkmanapi.Jobs", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Address")
.HasColumnType("text")
.HasColumnName("address");
b.Property<int>("CustomerId")
.HasColumnType("integer")
.HasColumnName("customer_id");
b.Property<DateTime>("EndDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("end_date");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Notes")
.HasColumnType("text")
.HasColumnName("notes");
b.Property<DateTime>("StartDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("start_date");
b.Property<string>("StatusId")
.HasColumnType("text")
.HasColumnName("status_id");
b.Property<decimal>("TotalPrice")
.HasColumnType("numeric")
.HasColumnName("total_price");
b.Property<string>("Venue")
.HasColumnType("text")
.HasColumnName("venue");
b.HasKey("Id")
.HasName("pk_jobs");
b.HasIndex("StatusId")
.HasDatabaseName("ix_jobs_status_id");
b.ToTable("jobs", (string)null);
});
modelBuilder.Entity("barkmanapi.InventoryItems", b =>
{
b.HasOne("barkmanapi.ItemStatus", "Status")
.WithMany()
.HasForeignKey("StatusId")
.HasConstraintName("fk_inventory_item_status_status_id");
b.Navigation("Status");
});
modelBuilder.Entity("barkmanapi.JobItems", b =>
{
b.HasOne("barkmanapi.Jobs", null)
.WithMany("Items")
.HasForeignKey("JobsId")
.HasConstraintName("fk_job_items_jobs_jobs_id");
});
modelBuilder.Entity("barkmanapi.Jobs", b =>
{
b.HasOne("barkmanapi.JobStatus", "Status")
.WithMany()
.HasForeignKey("StatusId")
.HasConstraintName("fk_jobs_job_status_status_id");
b.Navigation("Status");
});
modelBuilder.Entity("barkmanapi.Jobs", b =>
{
b.Navigation("Items");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,22 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace barkmanapi.Migrations
{
/// <inheritdoc />
public partial class change_datetimeoffset_to_datetime : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}
@@ -0,0 +1,302 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using barkmanapi;
#nullable disable
namespace barkmanapi.Migrations
{
[DbContext(typeof(BarkContext))]
[Migration("20260725205905_splitdatetimeIntoSeprateFeileds")]
partial class splitdatetimeIntoSeprateFeileds
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.1")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("barkmanapi.Customers", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Address")
.HasColumnType("text")
.HasColumnName("address");
b.Property<string>("BillingTerms")
.HasColumnType("text")
.HasColumnName("billing_terms");
b.Property<string>("Company")
.HasColumnType("text")
.HasColumnName("company");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("text")
.HasColumnName("email");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Notes")
.HasColumnType("text")
.HasColumnName("notes");
b.Property<string>("PhoneNumber")
.HasColumnType("text")
.HasColumnName("phone_number");
b.HasKey("Id")
.HasName("pk_customers");
b.ToTable("customers", (string)null);
});
modelBuilder.Entity("barkmanapi.InventoryItems", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Barcode")
.IsRequired()
.HasColumnType("text")
.HasColumnName("barcode");
b.Property<string>("Brand")
.IsRequired()
.HasColumnType("text")
.HasColumnName("brand");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Notes")
.HasColumnType("text")
.HasColumnName("notes");
b.Property<float?>("RentalPrice")
.HasColumnType("real")
.HasColumnName("rental_price");
b.Property<float?>("ReplacementCost")
.HasColumnType("real")
.HasColumnName("replacement_cost");
b.Property<string>("SerialNumber")
.HasColumnType("text")
.HasColumnName("serial_number");
b.Property<string>("StatusId")
.HasColumnType("text")
.HasColumnName("status_id");
b.Property<float?>("Weight")
.HasColumnType("real")
.HasColumnName("weight");
b.HasKey("Id")
.HasName("pk_inventory");
b.HasIndex("Barcode")
.IsUnique()
.HasDatabaseName("ix_inventory_barcode");
b.HasIndex("StatusId")
.HasDatabaseName("ix_inventory_status_id");
b.ToTable("inventory", (string)null);
});
modelBuilder.Entity("barkmanapi.ItemStatus", b =>
{
b.Property<string>("Id")
.HasColumnType("text")
.HasColumnName("id");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_item_status");
b.ToTable("item_status", (string)null);
});
modelBuilder.Entity("barkmanapi.JobItems", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("ItemId")
.IsRequired()
.HasColumnType("text")
.HasColumnName("item_id");
b.Property<string>("JobId")
.IsRequired()
.HasColumnType("text")
.HasColumnName("job_id");
b.Property<int?>("JobsId")
.HasColumnType("integer")
.HasColumnName("jobs_id");
b.Property<int>("Quantity")
.HasColumnType("integer")
.HasColumnName("quantity");
b.HasKey("Id")
.HasName("pk_job_items");
b.HasIndex("JobsId")
.HasDatabaseName("ix_job_items_jobs_id");
b.ToTable("job_items", (string)null);
});
modelBuilder.Entity("barkmanapi.JobStatus", b =>
{
b.Property<string>("Id")
.HasColumnType("text")
.HasColumnName("id");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_job_status");
b.ToTable("job_status", (string)null);
});
modelBuilder.Entity("barkmanapi.Jobs", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Address")
.HasColumnType("text")
.HasColumnName("address");
b.Property<int>("CustomerId")
.HasColumnType("integer")
.HasColumnName("customer_id");
b.Property<DateOnly>("EndDate")
.HasColumnType("date")
.HasColumnName("end_date");
b.Property<TimeOnly>("EndTime")
.HasColumnType("time without time zone")
.HasColumnName("end_time");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property<string>("Notes")
.HasColumnType("text")
.HasColumnName("notes");
b.Property<DateOnly>("StartDate")
.HasColumnType("date")
.HasColumnName("start_date");
b.Property<TimeOnly>("StartTime")
.HasColumnType("time without time zone")
.HasColumnName("start_time");
b.Property<string>("StatusId")
.HasColumnType("text")
.HasColumnName("status_id");
b.Property<decimal>("TotalPrice")
.HasColumnType("numeric")
.HasColumnName("total_price");
b.Property<string>("Venue")
.HasColumnType("text")
.HasColumnName("venue");
b.HasKey("Id")
.HasName("pk_jobs");
b.HasIndex("StatusId")
.HasDatabaseName("ix_jobs_status_id");
b.ToTable("jobs", (string)null);
});
modelBuilder.Entity("barkmanapi.InventoryItems", b =>
{
b.HasOne("barkmanapi.ItemStatus", "Status")
.WithMany()
.HasForeignKey("StatusId")
.HasConstraintName("fk_inventory_item_status_status_id");
b.Navigation("Status");
});
modelBuilder.Entity("barkmanapi.JobItems", b =>
{
b.HasOne("barkmanapi.Jobs", null)
.WithMany("Items")
.HasForeignKey("JobsId")
.HasConstraintName("fk_job_items_jobs_jobs_id");
});
modelBuilder.Entity("barkmanapi.Jobs", b =>
{
b.HasOne("barkmanapi.JobStatus", "Status")
.WithMany()
.HasForeignKey("StatusId")
.HasConstraintName("fk_jobs_job_status_status_id");
b.Navigation("Status");
});
modelBuilder.Entity("barkmanapi.Jobs", b =>
{
b.Navigation("Items");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,73 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace barkmanapi.Migrations
{
/// <inheritdoc />
public partial class splitdatetimeIntoSeprateFeileds : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<DateOnly>(
name: "start_date",
table: "jobs",
type: "date",
nullable: false,
oldClrType: typeof(DateTime),
oldType: "timestamp with time zone");
migrationBuilder.AlterColumn<DateOnly>(
name: "end_date",
table: "jobs",
type: "date",
nullable: false,
oldClrType: typeof(DateTime),
oldType: "timestamp with time zone");
migrationBuilder.AddColumn<TimeOnly>(
name: "end_time",
table: "jobs",
type: "time without time zone",
nullable: false,
defaultValue: new TimeOnly(0, 0, 0));
migrationBuilder.AddColumn<TimeOnly>(
name: "start_time",
table: "jobs",
type: "time without time zone",
nullable: false,
defaultValue: new TimeOnly(0, 0, 0));
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "end_time",
table: "jobs");
migrationBuilder.DropColumn(
name: "start_time",
table: "jobs");
migrationBuilder.AlterColumn<DateTime>(
name: "start_date",
table: "jobs",
type: "timestamp with time zone",
nullable: false,
oldClrType: typeof(DateOnly),
oldType: "date");
migrationBuilder.AlterColumn<DateTime>(
name: "end_date",
table: "jobs",
type: "timestamp with time zone",
nullable: false,
oldClrType: typeof(DateOnly),
oldType: "date");
}
}
}
@@ -215,10 +215,14 @@ namespace barkmanapi.Migrations
.HasColumnType("integer") .HasColumnType("integer")
.HasColumnName("customer_id"); .HasColumnName("customer_id");
b.Property<DateTimeOffset>("EndDate") b.Property<DateOnly>("EndDate")
.HasColumnType("timestamp with time zone") .HasColumnType("date")
.HasColumnName("end_date"); .HasColumnName("end_date");
b.Property<TimeOnly>("EndTime")
.HasColumnType("time without time zone")
.HasColumnName("end_time");
b.Property<string>("Name") b.Property<string>("Name")
.IsRequired() .IsRequired()
.HasColumnType("text") .HasColumnType("text")
@@ -228,10 +232,14 @@ namespace barkmanapi.Migrations
.HasColumnType("text") .HasColumnType("text")
.HasColumnName("notes"); .HasColumnName("notes");
b.Property<DateTimeOffset>("StartDate") b.Property<DateOnly>("StartDate")
.HasColumnType("timestamp with time zone") .HasColumnType("date")
.HasColumnName("start_date"); .HasColumnName("start_date");
b.Property<TimeOnly>("StartTime")
.HasColumnType("time without time zone")
.HasColumnName("start_time");
b.Property<string>("StatusId") b.Property<string>("StatusId")
.HasColumnType("text") .HasColumnType("text")
.HasColumnName("status_id"); .HasColumnName("status_id");
+4
View File
@@ -271,6 +271,8 @@ jobGroup.MapPut("/{id}", async (int id, Jobs updatedJob, BarkContext db) =>
existingJob.Name = updatedJob.Name; existingJob.Name = updatedJob.Name;
existingJob.StartDate = updatedJob.StartDate; existingJob.StartDate = updatedJob.StartDate;
existingJob.EndDate = updatedJob.EndDate; existingJob.EndDate = updatedJob.EndDate;
existingJob.StartTime = updatedJob.StartTime;
existingJob.EndTime = updatedJob.EndTime;
existingJob.TotalPrice = updatedJob.TotalPrice; existingJob.TotalPrice = updatedJob.TotalPrice;
existingJob.Venue = updatedJob.Venue; existingJob.Venue = updatedJob.Venue;
existingJob.Address = updatedJob.Address; existingJob.Address = updatedJob.Address;
@@ -288,6 +290,8 @@ jobGroup.MapPost("", async (Jobs newJobInput, BarkContext db) =>
Name = newJobInput.Name, Name = newJobInput.Name,
StartDate = newJobInput.StartDate, StartDate = newJobInput.StartDate,
EndDate = newJobInput.EndDate, EndDate = newJobInput.EndDate,
StartTime = newJobInput.StartTime,
EndTime = newJobInput.EndTime,
Venue = newJobInput.Venue, Venue = newJobInput.Venue,
Address = newJobInput.Address, Address = newJobInput.Address,
Notes = newJobInput.Notes, Notes = newJobInput.Notes,
+5 -2
View File
@@ -1,3 +1,4 @@
using System.Runtime.InteropServices.JavaScript;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
namespace barkmanapi; namespace barkmanapi;
@@ -53,8 +54,10 @@ public class Jobs
public required string Name { get; set; } public required string Name { get; set; }
public JobStatus Status { get; set; } public JobStatus Status { get; set; }
public string? StatusId { get; set; } public string? StatusId { get; set; }
public DateTimeOffset StartDate { get; set; } public DateOnly StartDate { get; set; }
public DateTimeOffset EndDate { get; set; } public DateOnly EndDate { get; set; }
public TimeOnly StartTime { get; set; }
public TimeOnly EndTime { get; set; }
public decimal TotalPrice { get; set; } public decimal TotalPrice { get; set; }
public string? Venue { get; set; } public string? Venue { get; set; }
public string? Address { get; set; } public string? Address { get; set; }