Skip to content

Commit d3655f8

Browse files
Merge branch 'integration' into Added_ErrorPage
2 parents be95eb7 + e9d91af commit d3655f8

34 files changed

+509
-275
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
2+
# More GitHub Actions for Azure: https://github.com/Azure/actions
3+
4+
name: Build and deploy ASP.Net Core app to Azure Web App - CheckDriver
5+
6+
on:
7+
push:
8+
branches:
9+
- integration
10+
workflow_dispatch:
11+
12+
jobs:
13+
build:
14+
runs-on: windows-latest
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Set up .NET Core
20+
uses: actions/setup-dotnet@v1
21+
with:
22+
dotnet-version: '8.x'
23+
include-prerelease: true
24+
25+
- name: Build with dotnet
26+
run: dotnet build --configuration Release
27+
28+
- name: dotnet publish
29+
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp
30+
31+
- name: Upload artifact for deployment job
32+
uses: actions/upload-artifact@v3
33+
with:
34+
name: .net-app
35+
path: ${{env.DOTNET_ROOT}}/myapp
36+
37+
deploy:
38+
runs-on: windows-latest
39+
needs: build
40+
environment:
41+
name: 'Production'
42+
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
43+
permissions:
44+
id-token: write #This is required for requesting the JWT
45+
46+
steps:
47+
- name: Download artifact from build job
48+
uses: actions/download-artifact@v3
49+
with:
50+
name: .net-app
51+
52+
- name: Login to Azure
53+
uses: azure/login@v1
54+
with:
55+
client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_E9AF348E5C5C43AA8D4DC6D5D7832550 }}
56+
tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_C81C36AF407F47E0841F8C513B2E4689 }}
57+
subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_548C4B80BB1545B19DFB28DE2B816ED6 }}
58+
59+
- name: Deploy to Azure Web App
60+
id: deploy-to-webapp
61+
uses: azure/webapps-deploy@v2
62+
with:
63+
app-name: 'CheckDriver'
64+
slot-name: 'Production'
65+
package: .
66+

CheckDrive.Web/CheckDrive.Web/CheckDrive.Web.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<Compile Include="Controllers\OperatorReviewsController.cs" />
2828
<Compile Include="Controllers\OperatorsController.cs" />
2929
<Compile Include="Controllers\TechniciansController.cs" />
30-
<PackageReference Include="CheckDrive.ApiContracts" Version="1.3.4" />
30+
<PackageReference Include="CheckDrive.ApiContracts" Version="1.3.5" />
3131
<PackageReference Include="CheckDrive.DTOs" Version="1.0.0" />
3232
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.4" />
3333
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.2" />

CheckDrive.Web/CheckDrive.Web/Controllers/AccountsController.cs

+2
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ public async Task<IActionResult> Create([Bind("Login,Password,PhoneNumber,FirstN
7676
await _accountDataStore.CreateAccountAsync(account);
7777
return RedirectToAction(nameof(Index));
7878
}
79+
var roles = await GETRoles();
80+
ViewBag.Roles = new SelectList(roles, "Id", "Name");
7981
return View(account);
8082
}
8183

CheckDrive.Web/CheckDrive.Web/Controllers/AuthController.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using CheckDrive.Web.Stores.User;
1+
using CheckDrive.ApiContracts.Account;
2+
using CheckDrive.Web.Stores.User;
23
using CheckDrive.Web.ViewModels;
34
using Microsoft.AspNetCore.Mvc;
45
using System.IdentityModel.Tokens.Jwt;
@@ -52,14 +53,14 @@ public IActionResult Index()
5253
}
5354

5455
[HttpPost]
55-
public async Task<IActionResult> Index(LoginViewModel loginViewModel)
56+
public async Task<IActionResult> Index(AccountForLoginDto loginViewModel)
5657
{
5758
if (!ModelState.IsValid)
5859
{
5960
return View(loginViewModel);
6061
}
6162

62-
var user = new LoginViewModel
63+
var user = new AccountForLoginDto
6364
{
6465
Login = loginViewModel.Login,
6566
Password = loginViewModel.Password,

CheckDrive.Web/CheckDrive.Web/Controllers/DispatcherReviewsController.cs

+7
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@ public async Task<IActionResult> PersonalIndex(int? pagenumber)
7575
{
7676
var reviewsResponse = await _dispatcherReviewDataStore.GetDispatcherReviews(pagenumber, null, null, 5);
7777

78+
ViewBag.PageSize = reviewsResponse.PageSize;
79+
ViewBag.PageCount = reviewsResponse.TotalPages;
80+
ViewBag.TotalCount = reviewsResponse.TotalCount;
81+
ViewBag.CurrentPage = reviewsResponse.PageNumber;
82+
ViewBag.HasPreviousPage = reviewsResponse.HasPreviousPage;
83+
ViewBag.HasNextPage = reviewsResponse.HasNextPage;
84+
7885
return View(reviewsResponse.Data);
7986
}
8087

CheckDrive.Web/CheckDrive.Web/Controllers/DoctorReviewsController.cs

+11-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public DoctorReviewsController(IDoctorReviewDataStore doctorReviewDataStore, IDo
2525

2626
public async Task<IActionResult> Index(int? pageNumber, string? searchString, DateTime? date)
2727
{
28-
var response = await _doctorReviewDataStore.GetDoctorReviewsAsync(pageNumber, searchString, date, 1);
28+
var response = await _doctorReviewDataStore.GetDoctorReviewsAsync(pageNumber, searchString, date, null, 1);
2929

3030
ViewBag.PageSize = response.PageSize;
3131
ViewBag.PageCount = response.TotalPages;
@@ -51,8 +51,15 @@ public async Task<IActionResult> Index(int? pageNumber, string? searchString, Da
5151

5252
public async Task<IActionResult> PersonalIndex(int? pageNumber, string? searchString)
5353
{
54-
var reviewsResponse = await _doctorReviewDataStore.GetDoctorReviewsAsync(pageNumber, searchString, null, 3);
55-
54+
var reviewsResponse = await _doctorReviewDataStore.GetDoctorReviewsAsync(pageNumber, searchString, null, null, 3);
55+
56+
ViewBag.PageSize = reviewsResponse.PageSize;
57+
ViewBag.PageCount = reviewsResponse.TotalPages;
58+
ViewBag.TotalCount = reviewsResponse.TotalCount;
59+
ViewBag.CurrentPage = reviewsResponse.PageNumber;
60+
ViewBag.HasPreviousPage = reviewsResponse.HasPreviousPage;
61+
ViewBag.HasNextPage = reviewsResponse.HasNextPage;
62+
5663
return View(reviewsResponse.Data);
5764
}
5865

@@ -201,7 +208,7 @@ private async Task<bool> DoctorReviewExists(int id)
201208

202209
private async Task<List<SelectListItem>> GetDriversNotUsedToday()
203210
{
204-
var doctorReviews = await _doctorReviewDataStore.GetDoctorReviewsAsync(null, null, null, 1);
211+
var doctorReviews = await _doctorReviewDataStore.GetDoctorReviewsAsync(null, null, null, null, 1);
205212
var today = DateTime.Today;
206213
var usedDriverIds = doctorReviews.Data
207214
.Where(dr => dr.Date.Date == today)

CheckDrive.Web/CheckDrive.Web/Controllers/MechanicAcceptancesController.cs

+42-32
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public MechanicAcceptancesController(IMechanicAcceptanceDataStore mechanicAccept
3333
public async Task<IActionResult> Index(int? pageNumber, string? searchString, DateTime? date)
3434
{
3535

36-
var response = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(pageNumber, searchString, date, 1);
36+
var response = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(pageNumber, searchString, date, null, 1);
3737

3838
ViewBag.PageSize = response.PageSize;
3939
ViewBag.PageCount = response.TotalPages;
@@ -71,68 +71,84 @@ public async Task<IActionResult> Index(int? pageNumber, string? searchString, Da
7171

7272
public async Task<IActionResult> PersonalIndex(string? searchString, int? pageNumber)
7373
{
74+
var response = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(pageNumber, searchString, null, null, 6);
7475

75-
var response = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(pageNumber, searchString, null, 6);
76+
ViewBag.PageSize = response.PageSize;
77+
ViewBag.PageCount = response.TotalPages;
78+
ViewBag.TotalCount = response.TotalCount;
79+
ViewBag.CurrentPage = response.PageNumber;
80+
ViewBag.HasPreviousPage = response.HasPreviousPage;
81+
ViewBag.HasNextPage = response.HasNextPage;
7682

7783
return View(response.Data);
7884
}
79-
public async Task<IActionResult> Create(int? driverId, int? carId)
85+
public async Task<IActionResult> Create(int? driverId, int? carId, string carName)
8086
{
8187
var mechanics = await GETMechanics();
8288
var drivers = await GETDrivers();
8389
var cars = await GETCars();
8490

85-
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(null, null, null, 1);
86-
var mechanicAcceptances = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync();
91+
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(null, null, DateTime.Today, true, 1);
92+
var mechanicAcceptances = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(null, null, DateTime.Today, true, 1);
8793

8894
var accountIdStr = TempData["AccountId"] as string;
8995
TempData.Keep("AccountId");
9096

97+
var driverCarMapping = drivers.ToDictionary(d => int.Parse(d.Value), d => cars.FirstOrDefault(c => c.Value == d.Value)?.Value);
98+
9199
if (int.TryParse(accountIdStr, out int accountId))
92100
{
93101
var mechanicResponse = await _mechanicDataStore.GetMechanics(accountId);
94102
var mechanic = mechanicResponse.Data.FirstOrDefault();
95-
96103
if (mechanic != null)
97104
{
98105
var healthyDrivers = operatorReviews.Data
99-
.Where(dr => dr.IsGiven.HasValue && dr.IsGiven.Value && dr.Date.HasValue && dr.Date.Value.Date == DateTime.Today)
100106
.Select(dr => dr.DriverId)
101107
.ToList();
102108

103109
var acceptedDrivers = mechanicAcceptances.Data
104-
.Where(ma => ma.Date.HasValue && ma.Date.Value.Date == DateTime.Today)
105110
.Select(ma => ma.DriverId)
106111
.ToList();
107112

108113
var filteredDrivers = drivers
109114
.Where(d => healthyDrivers.Contains(int.Parse(d.Value)) && !acceptedDrivers.Contains(int.Parse(d.Value)))
110115
.ToList();
111116

112-
if (driverId == null && filteredDrivers.Any())
117+
if (driverId.HasValue && !carId.HasValue)
113118
{
114-
driverId = int.Parse(filteredDrivers.First().Value);
119+
driverCarMapping.TryGetValue(driverId.Value, out var associatedCarId);
120+
if (int.TryParse(associatedCarId, out int parsedCarId))
121+
{
122+
if (parsedCarId != 1)
123+
{
124+
carId = parsedCarId - 1;
125+
}
126+
else
127+
{
128+
129+
carId = parsedCarId;
130+
}
131+
}
115132
}
116133

117-
filteredDrivers = filteredDrivers.Where(d => d.Value != driverId.ToString()).ToList();
134+
ViewBag.Mechanics = new SelectList(mechanics, "Value", "Text");
135+
ViewBag.Drivers = new SelectList(filteredDrivers, "Value", "Text", driverId);
118136

119-
if (carId == null && cars.Any())
137+
if (string.IsNullOrEmpty(carName))
120138
{
121-
carId = int.Parse(cars.First().Value);
139+
ViewBag.Cars = new SelectList(cars, "Value", "Text", carId);
140+
ViewBag.SelectedCar = cars.FirstOrDefault(c => c.Value == carId.ToString())?.Text;
141+
}
142+
else
143+
{
144+
ViewBag.Cars = carName;
145+
ViewBag.SelectedCarId = carId;
122146
}
123147

124-
ViewBag.Mechanics = new SelectList(mechanics, "Value", "Text");
125-
ViewBag.Drivers = new SelectList(filteredDrivers, "Value", "Text", driverId);
126-
ViewBag.Cars = new SelectList(cars, "Value", "Text", carId);
127-
128-
var selectedDriverName = drivers.FirstOrDefault(d => d.Value == driverId.ToString())?.Text;
148+
var selectedDriverName = filteredDrivers.FirstOrDefault(d => d.Value == driverId.ToString())?.Text;
129149
ViewBag.SelectedDriverName = selectedDriverName ?? string.Empty;
130150
ViewBag.SelectedDriverId = driverId;
131151

132-
var selectedCar = cars.FirstOrDefault(c => c.Value == carId.ToString())?.Text;
133-
ViewBag.SelectedCar = selectedCar ?? string.Empty;
134-
ViewBag.SelectedCarId = carId;
135-
136152
var model = new MechanicAcceptanceForCreateDto
137153
{
138154
DriverId = driverId ?? 0,
@@ -147,8 +163,6 @@ public async Task<IActionResult> Create(int? driverId, int? carId)
147163
return NotFound("Mechanic not found for the specified account.");
148164
}
149165

150-
151-
152166
[HttpPost]
153167
[ValidateAntiForgeryToken]
154168
public async Task<IActionResult> Create([Bind("IsAccepted,Comments,MechanicId,Distance,CarId,DriverId")] MechanicAcceptanceForCreateDto mechanicAcceptanceForCreateDto)
@@ -161,30 +175,26 @@ public async Task<IActionResult> Create([Bind("IsAccepted,Comments,MechanicId,Di
161175
}
162176

163177
mechanicAcceptanceForCreateDto.Date = DateTime.Now;
164-
165178
await _mechanicAcceptanceDataStore.CreateMechanicAcceptanceAsync(mechanicAcceptanceForCreateDto);
166179
return RedirectToAction(nameof(PersonalIndex));
167180
}
168181

169182
var mechanics = await GETMechanics();
170183
var drivers = await GETDrivers();
171184
var cars = await GETCars();
172-
173185
ViewBag.Mechanics = new SelectList(mechanics, "Value", "Text");
174186
ViewBag.Drivers = new SelectList(drivers, "Value", "Text", mechanicAcceptanceForCreateDto.DriverId);
175187
ViewBag.Cars = new SelectList(cars, "Value", "Text", mechanicAcceptanceForCreateDto.CarId);
176188

177189
var selectedDriverName = drivers.FirstOrDefault(d => d.Value == mechanicAcceptanceForCreateDto.DriverId.ToString())?.Text;
178190
ViewBag.SelectedDriverName = selectedDriverName ?? string.Empty;
179191
ViewBag.SelectedDriverId = mechanicAcceptanceForCreateDto.DriverId;
180-
181-
var selectedCar = cars.FirstOrDefault(c => c.Value == mechanicAcceptanceForCreateDto.CarId.ToString())?.Text;
182-
ViewBag.SelectedCar = selectedCar ?? string.Empty;
183-
ViewBag.SelectedCarId = mechanicAcceptanceForCreateDto.CarId;
192+
ViewBag.SelectedCar = cars.FirstOrDefault(c => c.Value == mechanicAcceptanceForCreateDto.CarId.ToString())?.Text;
184193

185194
return View(mechanicAcceptanceForCreateDto);
186195
}
187196

197+
188198
[HttpPost]
189199
[ValidateAntiForgeryToken]
190200
public async Task<IActionResult> Edit(int id, MechanicAcceptanceForUpdateDto mechanicAcceptance)
@@ -284,8 +294,8 @@ private async Task<List<SelectListItem>> GETDrivers()
284294

285295
public async Task<IActionResult> GetCarByDriverId(int driverId)
286296
{
287-
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(null, null, null, null);
288-
var operatorr = operatorReviews.Data.FirstOrDefault(m => m.DriverId == driverId && m.Date.Value.Date == DateTime.Today);
297+
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(null,null, DateTime.Today, true, 1);
298+
var operatorr = operatorReviews.Data.FirstOrDefault(m => m.DriverId == driverId);
289299

290300
if (operatorr != null)
291301
{

0 commit comments

Comments
 (0)