-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
150 lines (103 loc) · 3.87 KB
/
Program.cs
File metadata and controls
150 lines (103 loc) · 3.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using MySql.EntityFrameworkCore.Extensions;
using Workhourtrack;
using Workhourtrack.Entities;
var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
var builder = WebApplication.CreateBuilder(args);
// Add the necessary configurations for your application
builder.Services.AddEntityFrameworkMySQL()
.AddDbContext<HourtrackContext>(options =>
{
options.UseMySQL("server=workhour-mysql.mysql.database.azure.com;user=workhouse;password=karachi-123;database=hourtrack");
});
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowOrigin", policy =>
{
policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
});
});
var app = builder.Build();
app.UseCors("AllowOrigin"); // Apply CORS middleware here
// ... your other route handlers ...
app.MapGet("/employees", async (HourtrackContext dbContext) =>
{
var employees = await dbContext.Employees.ToListAsync();
return employees;
});
app.MapGet("/employees/{id}", async (int id, HourtrackContext dbContext) =>
await dbContext.Employees.FindAsync(id)
is Employee employee
? Results.Ok(employee)
: Results.NotFound());
app.MapPut("/employees/{id}", async (int id, Employee inputEmployee, HourtrackContext dbContext) =>
{
var employee = await dbContext.Employees.FindAsync(id);
if (employee is null) return Results.NotFound();
employee.Id = inputEmployee.Id;
employee.Name = inputEmployee.Name;
await dbContext.SaveChangesAsync();
return Results.NoContent();
});
app.MapGet("/projects", async (HourtrackContext dbContext) =>
{
var projects = await dbContext.Projects.ToListAsync();
return projects;
});
app.MapGet("/projects/{id}", async (int id, HourtrackContext dbContext) =>
await dbContext.Projects.FindAsync(id)
is Project project
? Results.Ok(project)
: Results.NotFound());
app.MapPut("/projects/{id}", async (int id, Project inputProject, HourtrackContext dbContext) =>
{
var project = await dbContext.Projects.FindAsync(id);
if (project is null) return Results.NotFound();
project.Id = inputProject.Id;
project.Name = inputProject.Name;
await dbContext.SaveChangesAsync();
return Results.NoContent();
});
app.MapGet("/workhour", async (HourtrackContext dbContext) =>
{
var workhours = await dbContext.Workhours.ToListAsync();
return workhours;
});
app.MapGet("/workhour/{id}", async (int id, HourtrackContext dbContext) =>
await dbContext.Workhours.FindAsync(id)
is Workhour Workhours
? Results.Ok(Workhours)
: Results.NotFound());
app.MapPut("/workhour/{id}", async (int id, Project inputProject, HourtrackContext dbContext) =>
{
var project = await dbContext.Projects.FindAsync(id);
if (project is null) return Results.NotFound();
project.Id = inputProject.Id;
project.Name = inputProject.Name;
await dbContext.SaveChangesAsync();
return Results.NoContent();
});
app.MapGet("/workhour/transactions", async (int employeeId, int projectId, DateTime startTime, DateTime endTime, HourtrackContext dbContext) =>
{
var transactions = await dbContext.Workhours
.Where(w => w.EmployeeId == employeeId && w.ProjectId == projectId && w.StartTime >= startTime && w.EndTime <= endTime)
.Select(w => new
{
w.EmployeeId,
w.ProjectId,
w.StartTime,
w.EndTime,
w.WorkDescription
})
.ToListAsync();
return transactions;
});
app.MapPost("/workhour", async (Workhour workhour, HourtrackContext dbContext) =>
{
dbContext.Workhours.Add(workhour);
await dbContext.SaveChangesAsync();
return Results.Created($"/todoitems/{workhour.Id}", workhour);
});
app.UseCors(MyAllowSpecificOrigins);
app.Run();