public async Task <OperationDataResult <List <DeviceUser> > > Index([FromBody] DeviceUserSearchRequestModel requestModel) { return(await _deviceUsersService.Index(requestModel)); }
public async Task <OperationDataResult <List <DeviceUser> > > Index(DeviceUserSearchRequestModel requestModel) { try { var core = await _coreHelper.GetCore(); var sdkDbContext = core.DbContextHelper.GetDbContext(); // var deviceUsers = new List<DeviceUser>(); var sitesQuery = sdkDbContext.Sites .Include(x => x.Units) .Include(x => x.SiteWorkers) .ThenInclude(x => x.Worker) .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed); try { sitesQuery = QueryHelper.AddFilterAndSortToQuery(sitesQuery, requestModel, new List <string> { "Name" }); } catch (Exception e) { Console.WriteLine(e); } var deviceUsers = await sitesQuery .Select(x => new DeviceUser { CustomerNo = x.Units .Where(y => y.WorkflowState != Constants.WorkflowStates.Removed) .Select(y => y.CustomerNo) .FirstOrDefault(), FirstName = x.SiteWorkers.FirstOrDefault(y => y.WorkflowState != Constants.WorkflowStates.Removed).Worker.FirstName, LastName = x.SiteWorkers.FirstOrDefault(y => y.WorkflowState != Constants.WorkflowStates.Removed).Worker.LastName, LanguageId = x.LanguageId, OtpCode = x.Units .Where(y => y.WorkflowState != Constants.WorkflowStates.Removed) .Select(y => y.OtpCode) .FirstOrDefault(), SiteId = x.Id, SiteUid = x.MicrotingUid, SiteName = x.Name, UnitId = x.Units .Where(y => y.WorkflowState != Constants.WorkflowStates.Removed) .Select(y => y.MicrotingUid) .FirstOrDefault(), WorkerUid = x.SiteWorkers.FirstOrDefault(y => y.WorkflowState != Constants.WorkflowStates.Removed).Worker.MicrotingUid, Language = sdkDbContext.Languages.Where(y => y.Id == x.LanguageId).Select(y => y.Name).SingleOrDefault() ?? "Danish", LanguageCode = sdkDbContext.Languages.Where(y => y.Id == x.LanguageId).Select(y => y.LanguageCode).SingleOrDefault() ?? "da", IsLocked = x.IsLocked }) .ToListAsync(); // foreach (var site in sites) // { // var language = await sdkDbContext.Languages.SingleOrDefaultAsync(x => x.Id == site.LanguageId) ?? sdkDbContext.Languages.Single(x => x.LanguageCode == "da"); // var siteWorkerId = await sdkDbContext.SiteWorkers // .Where(x => x.SiteId == site.Id) // .Include(x => x.Site) // .Include(x => x.Worker) // .Select(x => x.WorkerId) // .FirstOrDefaultAsync(); // var worker = await sdkDbContext.Workers // .Where(x => x.Id == siteWorkerId) // .Select(x => new { x.MicrotingUid, x.FirstName, x.LastName }) // .FirstOrDefaultAsync(); // var unit = await sdkDbContext.Units // .Where(x => x.SiteId == site.Id) // .Select(x => new { x.CustomerNo, x.OtpCode, x.MicrotingUid }) // .FirstOrDefaultAsync(); // // if (!string.IsNullOrEmpty(requestModel.NameFilter) && !worker.FirstName.ToLower().Contains(requestModel.NameFilter.ToLower()) // && !worker.LastName.ToLower().Contains(requestModel.NameFilter.ToLower()) // && !unit.MicrotingUid.ToString().ToLower().Contains(requestModel.NameFilter.ToLower())) // { // continue; // } // // if (site.LanguageId == 0) // set default language id to danish // { // site.LanguageId = sdkDbContext.Languages // .Single(x => x.Name == "Danish").Id; // await site.Update(sdkDbContext); // } // // deviceUsers.Add( // new DeviceUser // { // CustomerNo = unit.CustomerNo, // FirstName = worker?.FirstName, // LastName = worker?.LastName, // LanguageId = site.LanguageId, // OtpCode = unit.OtpCode, // SiteId = site.Id, // SiteUid = site.MicrotingUid, // SiteName = site.Name, // UnitId = unit.MicrotingUid, // WorkerUid = worker?.MicrotingUid, // Language = language.Name, // LanguageCode = language.LanguageCode, // }); // } // var siteDto = await core.SiteReadAll(false); return(new OperationDataResult <List <DeviceUser> >(true, deviceUsers)); } catch (Exception ex) { return(new OperationDataResult <List <DeviceUser> >(false, _localizationService.GetStringWithFormat("ErrorWhileGetDeviceUsers") + " " + ex.Message)); } }