Skip to content

Commit b866341

Browse files
committed
Adding better sorting and handling of worker email already in use
1 parent 749acf1 commit b866341

File tree

5 files changed

+32
-12
lines changed

5 files changed

+32
-12
lines changed

eFormAPI/Plugins/BackendConfiguration.Pn/BackendConfiguration.Pn/Infrastructure/Helpers/BackendConfigurationAssignmentWorkerServiceHelper.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ await core.EntityItemUpdate(entity.Id, entity.Name, entity.Description,
228228
await bus.SendLocal(new DocumentUpdated(documentId)).ConfigureAwait(false);
229229
}
230230

231-
if (!(bool)updateModel.TaskManagementEnabled!)
231+
if (updateModel.TaskManagementEnabled!)
232232
{
233233
foreach (var propertyWorker in assignments)
234234
{
@@ -286,6 +286,12 @@ public static async Task<OperationResult> UpdateDeviceUser(DeviceUserModel devic
286286
var worker = await sdkDbContext.Workers.SingleOrDefaultAsync(x => x.MicrotingUid == siteDto.WorkerUid).ConfigureAwait(false);
287287
if (worker != null)
288288
{
289+
290+
if (sdkDbContext.Workers.Any(x => x.Email == deviceUserModel.WorkerEmail && x.MicrotingUid != siteDto.WorkerUid))
291+
{
292+
// this email is already in use
293+
return new OperationDataResult<int>(false, "EmailIsAlreadyInUse");
294+
}
289295
var fullName = deviceUserModel.UserFirstName + " " + deviceUserModel.UserLastName;
290296
var isUpdated = await core.SiteUpdate(deviceUserModel.SiteMicrotingUid, fullName, deviceUserModel.UserFirstName,
291297
deviceUserModel.UserLastName, worker.Email, deviceUserModel.LanguageCode).ConfigureAwait(false);
@@ -517,7 +523,13 @@ public static async Task<OperationDataResult<int>> CreateDeviceUser(DeviceUserMo
517523

518524
site = await sdkDbContext.Sites.Where(x => x.MicrotingUid == siteDto.SiteId).FirstAsync().ConfigureAwait(false);
519525

520-
Worker worker = await sdkDbContext.Workers.SingleAsync(x => x.MicrotingUid == siteDto.WorkerUid).ConfigureAwait(false);
526+
var worker = await sdkDbContext.Workers.SingleAsync(x => x.MicrotingUid == siteDto.WorkerUid).ConfigureAwait(false);
527+
528+
if (sdkDbContext.Workers.Any(x => x.Email == deviceUserModel.WorkerEmail && x.MicrotingUid != siteDto.WorkerUid))
529+
{
530+
// this email is already in use
531+
return new OperationDataResult<int>(false, "EmailIsAlreadyInUse");
532+
}
521533

522534
worker.EmployeeNo = deviceUserModel.EmployeeNo;
523535
worker.PinCode = deviceUserModel.PinCode;

eFormAPI/Plugins/BackendConfiguration.Pn/BackendConfiguration.Pn/Infrastructure/Models/AssignmentWorker/PropertyAssignWorkersModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class PropertyAssignWorkersModel
3333
public List<PropertyAssignmentWorkerModel> Assignments { get; set; }
3434
= [];
3535

36-
public bool? TimeRegistrationEnabled { get; set; }
36+
public bool TimeRegistrationEnabled { get; set; }
3737

38-
public bool? TaskManagementEnabled { get; set; }
38+
public bool TaskManagementEnabled { get; set; }
3939
}

eFormAPI/Plugins/BackendConfiguration.Pn/BackendConfiguration.Pn/Infrastructure/Models/DeviceUserModel.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
SOFTWARE.
2323
*/
2424

25+
#nullable enable
2526
using System.Collections.Generic;
2627

2728
namespace BackendConfiguration.Pn.Infrastructure.Models;
@@ -104,8 +105,8 @@ public class DeviceUserModel
104105

105106
public string EmployeeNo { get; set; }
106107

107-
public string WorkerEmail { get; set; }
108-
public string PhoneNumber { get; set; }
108+
public string? WorkerEmail { get; set; }
109+
public string? PhoneNumber { get; set; }
109110

110111
public static implicit operator DeviceUserModel(Microting.EformAngularFrontendBase.Infrastructure.Data.Models.DeviceUserModel model)
111112
{

eFormAPI/Plugins/BackendConfiguration.Pn/BackendConfiguration.Pn/Services/BackendConfigurationAssignmentWorkerService/BackendConfigurationAssignmentWorkerService.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public async Task<OperationDataResult<List<PropertyAssignWorkersModel>>> GetProp
139139
}
140140

141141
assignWorkersModels.Add(new PropertyAssignWorkersModel
142-
{ SiteId = workerId.WorkerId, Assignments = assignments, TaskManagementEnabled = workerId.TaskManagementEnabled });
142+
{ SiteId = workerId.WorkerId, Assignments = assignments, TaskManagementEnabled = workerId.TaskManagementEnabled ?? false });
143143
}
144144

145145
var properties = await backendConfigurationPnDbContext.Properties
@@ -201,7 +201,7 @@ public async Task<OperationDataResult<List<PropertyAssignWorkersModel>>> GetSimp
201201
.ToListAsync().ConfigureAwait(false);
202202

203203
assignWorkersModels.Add(new PropertyAssignWorkersModel
204-
{ SiteId = workerId.WorkerId, Assignments = assignments, TaskManagementEnabled = workerId.TaskManagementEnabled });
204+
{ SiteId = workerId.WorkerId, Assignments = assignments, TaskManagementEnabled = workerId.TaskManagementEnabled ?? false });
205205
}
206206

207207
var properties = await backendConfigurationPnDbContext.Properties
@@ -363,7 +363,7 @@ join worker in sdkDbContext.Workers on siteWorker.WorkerId equals worker.Id
363363
UserLastName = worker.LastName,
364364
site.WorkflowState,
365365
WorkerEmail = worker.Email,
366-
PhoneNumber = worker.PhoneNumber,
366+
worker.PhoneNumber,
367367

368368
};
369369
sitesQuery = sitesQuery.Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);
@@ -490,9 +490,16 @@ join worker in sdkDbContext.Workers on siteWorker.WorkerId equals worker.Id
490490
// Convert deviceUsers to IQueryable
491491
var deviceUsersQuery = deviceUsers.AsQueryable();
492492

493+
var tempList = deviceUsersQuery.ToList();
494+
495+
foreach (var deviceUserModel in tempList)
496+
{
497+
Console.WriteLine("Device user: " + deviceUserModel.SiteName + " with workerEmail: " + deviceUserModel.WorkerEmail + " and phone number: " + deviceUserModel.PhoneNumber);
498+
}
499+
493500
try
494501
{
495-
deviceUsersQuery = QueryHelper.AddFilterAndSortToQuery(deviceUsersQuery, requestModel, new List<string> { "SiteName" });
502+
deviceUsersQuery = QueryHelper.AddFilterAndSortToQuery(deviceUsersQuery, requestModel, new List<string> { "SiteName", "WorkerEmail", "PhoneNumber", "EmployeeNo" });
496503
}
497504
catch (Exception e)
498505
{

eform-client/src/app/plugins/modules/backend-configuration-pn/modules/property-workers/components/property-worker-table/property-worker-table.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,14 @@ export class PropertyWorkerTableComponent implements OnInit, OnDestroy {
9999
},
100100
{
101101
header: this.translateService.stream('Email'),
102-
sortProp: {id: 'workerEmail'},
102+
sortProp: {id: 'WorkerEmail'},
103103
field: 'workerEmail',
104104
sortable: true,
105105
formatter: (rowData: DeviceUserModel) => rowData.workerEmail ? `${rowData.workerEmail}` : `N/A`,
106106
},
107107
{
108108
header: this.translateService.stream('Phone number'),
109-
sortProp: {id: 'phoneNumber'},
109+
sortProp: {id: 'PhoneNumber'},
110110
field: 'phoneNumber',
111111
sortable: true,
112112
formatter: (rowData: DeviceUserModel) => rowData.phoneNumber ? `${rowData.phoneNumber}` : `N/A`,

0 commit comments

Comments
 (0)