Skip to content

Commit e083b10

Browse files
committed
Better handling of device users combined with web users.
1 parent d792352 commit e083b10

File tree

3 files changed

+56
-85
lines changed

3 files changed

+56
-85
lines changed

eFormAPI/eFormAPI.Web/Services/AdminService.cs

Lines changed: 44 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -155,46 +155,13 @@ public async Task<OperationDataResult<Paged<UserInfoViewModel>>> Index(UserInfoR
155155

156156
foreach (UserInfoViewModel userInfoViewModel in userResult)
157157
{
158-
if (!userInfoViewModel.Email.Contains("microting.com") && !userInfoViewModel.Email.Contains("admin.com"))
158+
var workers = await sdkDbContext.Workers
159+
.Where(x => x.Email == userInfoViewModel.Email
160+
&& x.WorkflowState != Constants.WorkflowStates.Removed)
161+
.FirstOrDefaultAsync();
162+
if (workers != null)
159163
{
160164
userInfoViewModel.IsDeviceUser = true;
161-
162-
var fullName = userInfoViewModel.FirstName + " " + userInfoViewModel.LastName;
163-
if (sdkDbContext.Sites.Any(x =>
164-
x.Name.Replace(" ", "") == fullName.Replace(" ", "")
165-
&& x.WorkflowState != Constants.WorkflowStates.Removed))
166-
{
167-
}
168-
else
169-
{
170-
await core.SiteCreate($"{userInfoViewModel.FirstName} {userInfoViewModel.LastName}", userInfoViewModel.FirstName, userInfoViewModel.LastName,
171-
null, "da");
172-
}
173-
174-
var site = await sdkDbContext.Sites.FirstOrDefaultAsync(x =>
175-
x.Name.Replace(" ", "") == fullName.Replace(" ", "")
176-
&& x.WorkflowState != Constants.WorkflowStates.Removed);
177-
if (site != null)
178-
{
179-
site.IsLocked = true;
180-
await site.Update(sdkDbContext);
181-
var units = await sdkDbContext.Units.Where(x => x.SiteId == site.Id).ToListAsync();
182-
foreach (Unit unit in units)
183-
{
184-
unit.IsLocked = true;
185-
await unit.Update(sdkDbContext);
186-
}
187-
var siteWorker = await sdkDbContext.SiteWorkers.SingleOrDefaultAsync(x => x.SiteId == site.Id);
188-
var worker = await sdkDbContext.Workers.SingleOrDefaultAsync(x => x.Id == siteWorker.WorkerId);
189-
// var worker = await sdkDbContext.Workers.SingleOrDefaultAsync(x => x.FirstName == userInfoViewModel.FirstName
190-
// && x.LastName == userInfoViewModel.LastName
191-
// && x.WorkflowState != Constants.WorkflowStates.Removed);
192-
if (worker != null)
193-
{
194-
worker.IsLocked = true;
195-
await worker.Update(sdkDbContext);
196-
}
197-
}
198165
}
199166
}
200167

@@ -290,9 +257,20 @@ public async Task<OperationResult> Create(UserRegisterModel userRegisterModel)
290257
await dbContext.SaveChangesAsync();
291258
}
292259

293-
var site = await sdkDbContext.Sites.SingleOrDefaultAsync(x => x.Name == userRegisterModel.FirstName.Trim() + " " + userRegisterModel.LastName.Trim()
294-
&& x.WorkflowState != Constants.WorkflowStates.Removed);
260+
var worker = await sdkDbContext.Workers.FirstOrDefaultAsync(x => x.Email == user.Email && x.WorkflowState != Constants.WorkflowStates.Removed);
261+
if (worker != null)
262+
{
263+
worker.IsLocked = true;
264+
await worker.Update(sdkDbContext);
265+
}
266+
267+
var siteWorker = await sdkDbContext.SiteWorkers
268+
.Include(x => x.Site)
269+
.Where(x => x.WorkerId == worker.Id && x.WorkflowState != Constants.WorkflowStates.Removed)
270+
.FirstOrDefaultAsync();
295271

272+
var site = await sdkDbContext.Sites.SingleOrDefaultAsync(x => x.Id == siteWorker.SiteId && x.WorkflowState != Constants.WorkflowStates.Removed);
273+
// lock site and units
296274
if (site != null)
297275
{
298276
site.IsLocked = true;
@@ -303,13 +281,6 @@ public async Task<OperationResult> Create(UserRegisterModel userRegisterModel)
303281
unit.IsLocked = true;
304282
await unit.Update(sdkDbContext);
305283
}
306-
var siteWorker = await sdkDbContext.SiteWorkers.SingleOrDefaultAsync(x => x.SiteId == site.Id);
307-
var worker = await sdkDbContext.Workers.SingleOrDefaultAsync(x => x.Id == siteWorker.WorkerId);
308-
if (worker != null)
309-
{
310-
worker.IsLocked = true;
311-
await worker.Update(sdkDbContext);
312-
}
313284
}
314285

315286
return new OperationResult(true,
@@ -336,8 +307,8 @@ public async Task<OperationDataResult<UserRegisterModel>> Read(int userId)
336307
}
337308
var core = await coreHelper.GetCore();
338309
var sdkDbContext = core.DbContextHelper.GetDbContext();
339-
var site = await sdkDbContext.Sites.SingleOrDefaultAsync(x => x.Name == user.FirstName + " " + user.LastName
340-
&& x.WorkflowState != Constants.WorkflowStates.Removed);
310+
var worker = await sdkDbContext.Workers.AnyAsync(x => x.Email == user.Email
311+
&& x.WorkflowState != Constants.WorkflowStates.Removed);
341312

342313
var result = new UserRegisterModel()
343314
{
@@ -346,7 +317,7 @@ public async Task<OperationDataResult<UserRegisterModel>> Read(int userId)
346317
FirstName = user.FirstName,
347318
LastName = user.LastName,
348319
UserName = user.UserName,
349-
IsDeviceUser = site != null
320+
IsDeviceUser = worker
350321
};
351322
// get role
352323
var roles = await userManager.GetRolesAsync(user);
@@ -412,7 +383,12 @@ public async Task<OperationResult> Update(UserRegisterModel userRegisterModel)
412383
return new OperationResult(false, localizationService.GetString("YouCantViewChangeOrDeleteAdmin"));
413384
}
414385

415-
var site = await sdkDbContext.Sites.SingleOrDefaultAsync(x => x.Name == user.FirstName + " " + user.LastName
386+
var worker = await sdkDbContext.Workers.FirstOrDefaultAsync(x => x.Email == user.Email && x.WorkflowState != Constants.WorkflowStates.Removed);
387+
var siteWorker = await sdkDbContext.SiteWorkers
388+
.Where(x => x.WorkerId == worker.Id && x.WorkflowState != Constants.WorkflowStates.Removed)
389+
.FirstOrDefaultAsync();
390+
391+
var site = await sdkDbContext.Sites.SingleOrDefaultAsync(x => x.Id == siteWorker.SiteId
416392
&& x.WorkflowState != Constants.WorkflowStates.Removed);
417393
if (site != null)
418394
{
@@ -422,11 +398,19 @@ await core.SiteUpdate((int)site.MicrotingUid!,
422398
$"{userRegisterModel.FirstName} {userRegisterModel.LastName}", userRegisterModel.FirstName,
423399
userRegisterModel.LastName, userRegisterModel.Email, language.LanguageCode);
424400
}
425-
user.Email = userRegisterModel.Email;
426401
user.EmailConfirmed = true;
402+
user.Email = userRegisterModel.Email;
427403
user.UserName = userRegisterModel.Email;
428-
user.FirstName = userRegisterModel.FirstName;
429-
user.LastName = userRegisterModel.LastName;
404+
if (worker == null)
405+
{
406+
user.FirstName = userRegisterModel.FirstName;
407+
user.LastName = userRegisterModel.LastName;
408+
}
409+
else
410+
{
411+
worker.Email = userRegisterModel.Email;
412+
await worker.Update(sdkDbContext);
413+
}
430414

431415
var result = await userManager.UpdateAsync(user);
432416
if (!result.Succeeded)
@@ -515,34 +499,16 @@ public async Task<OperationResult> Delete(int userId)
515499
return new OperationResult(false, localizationService.GetString("YouCantViewChangeOrDeleteAdmin"));
516500
}
517501

518-
var site = await sdkDbContext.Sites.SingleOrDefaultAsync(x => x.Name == user.FirstName + " " + user.LastName
519-
&& x.WorkflowState != Constants.WorkflowStates.Removed);
520-
if (site != null)
502+
var worker = await sdkDbContext.Workers.FirstOrDefaultAsync(x => x.Email == user.Email && x.WorkflowState != Constants.WorkflowStates.Removed);
503+
if (worker != null)
521504
{
522-
site.IsLocked = false;
523-
await site.Update(sdkDbContext);
524-
var units = await sdkDbContext.Units.Where(x => x.SiteId == site.Id).ToListAsync();
525-
foreach (Unit unit in units)
526-
{
527-
unit.IsLocked = false;
528-
await unit.Update(sdkDbContext);
529-
}
530-
var siteWorker = await sdkDbContext.SiteWorkers.SingleOrDefaultAsync(x => x.SiteId == site.Id);
531-
var worker = await sdkDbContext.Workers.SingleOrDefaultAsync(x => x.Id == siteWorker.WorkerId);
532-
if (worker != null)
533-
{
534-
worker.IsLocked = false;
535-
await worker.Update(sdkDbContext);
536-
}
505+
return new OperationResult(false, localizationService.GetStringWithFormat("ErrorWhileDeletingUser", userId));
537506
}
538507

539508
var result = await userManager.DeleteAsync(user);
540-
if (!result.Succeeded)
541-
{
542-
return new OperationResult(false, string.Join(" ", result.Errors.Select(x => x.Description).ToArray()));
543-
}
544-
545-
return new OperationResult(true, localizationService.GetStringWithFormat("UserParamWasDeleted", userId));
509+
return !result.Succeeded
510+
? new OperationResult(false, string.Join(" ", result.Errors.Select(x => x.Description).ToArray()))
511+
: new OperationResult(true, localizationService.GetStringWithFormat("UserParamWasDeleted", userId));
546512
}
547513
catch (Exception e)
548514
{

eform-client/src/app/modules/account-management/components/users/users-page/users-page.component.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@
3737
[sortDirection]="selectUsersIsSortDsc$ | async"
3838
(sortChange)="onSortTable($event)">
3939
</mtx-grid>
40+
41+
<ng-template #idTpl let-row>
42+
<ng-container *ngIf="selectCurrentUserIsAdmin$ | async;">
43+
<span title="{{ 'Is device user' | translate }}">{{row.id}}<small class="microting-uid"> ({{row.isDeviceUser}})</small></span>
44+
</ng-container>
45+
</ng-template>
46+
47+
4048
<ng-template #idTpl let-row let-i="index">
4149
<div class="userAdministrationId" id="userAdministrationId-{{i}}">{{row.id}}</div>
4250
</ng-template>

eform-client/src/app/modules/account-management/components/users/users-page/users-page.component.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import {
3838
selectCurrentUserClaimsUsersUpdate,
3939
selectCurrentUserIsAdmin
4040
} from 'src/app/state';
41+
import {format} from "date-fns";
4142

4243
@AutoUnsubscribe()
4344
@Component({
@@ -270,11 +271,7 @@ export class UsersPageComponent implements OnInit, OnDestroy {
270271
});
271272
}
272273

273-
// openSetPasswordModal(id) {
274-
// // this.adminService.resetPassword(id).subscribe((data) => {
275-
// // if (data.success) {
276-
// // this.getUserInfoList();
277-
// // }
278-
// // });
279-
// }
274+
getFormattedDate(date: Date) {
275+
return format(date, 'P', {locale: this.authStateService.dateFnsLocale});
276+
}
280277
}

0 commit comments

Comments
 (0)