@@ -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 {
0 commit comments