private async Task CreateRelationships(int innerResourceId, int outerResourceId, string innerResourceName, string outerResourceName, List <SiteDto> sites, int eFormId) { var outerInnerResource = _dbContext.OuterInnerResources.SingleOrDefault(x => x.InnerResourceId == innerResourceId && x.OuterResourceId == outerResourceId); if (sites.Any()) { foreach (var siteDto in sites) { var siteMatch = await _dbContext.OuterInnerResourceSites .Where(x => x.MicrotingSdkSiteId == siteDto.SiteId && x.OuterInnerResourceId == outerInnerResource.Id) .ToListAsync(); if (!siteMatch.Any()) { var outerInnerResourceSite = new OuterInnerResourceSite { OuterInnerResourceId = outerInnerResource.Id, MicrotingSdkSiteId = siteDto.SiteId, MicrotingSdkeFormId = eFormId }; await outerInnerResourceSite.Create(_dbContext); await _bus.SendLocal(new OuterInnerResourcePosteForm(outerInnerResourceSite.Id, eFormId)); } } } }
public async Task Handle(eFormCompleted message) { #region get case information WriteLogEntry($"eFormCompletedHandler.Handle: we got called for message.caseId {message.caseId} and message.checkId {message.checkId}"); CaseDto caseDto = await _sdkCore.CaseLookup(message.caseId, message.checkId).ConfigureAwait(false); ReplyElement replyElement = await _sdkCore.CaseRead(message.caseId, message.checkId).ConfigureAwait(false); OuterInnerResourceSite machineAreaSite = _dbContext.OuterInnerResourceSites.SingleOrDefault(x => x.MicrotingSdkCaseId == message.caseId); ResourceTimeRegistration machineAreaTimeRegistration = await _dbContext.ResourceTimeRegistrations.SingleOrDefaultAsync(x => x.DoneAt == replyElement.DoneAt && x.SDKCaseId == (int)caseDto.CaseId && x.SDKSiteId == machineAreaSite.MicrotingSdkSiteId).ConfigureAwait(false); if (machineAreaTimeRegistration == null) { machineAreaTimeRegistration = new ResourceTimeRegistration(); if (machineAreaSite != null) { machineAreaTimeRegistration.OuterResourceId = machineAreaSite.OuterInnerResource.OuterResourceId; machineAreaTimeRegistration.InnerResourceId = machineAreaSite.OuterInnerResource.InnerResourceId; machineAreaTimeRegistration.DoneAt = replyElement.DoneAt; if (caseDto.CaseId != null) { machineAreaTimeRegistration.SDKCaseId = (int)caseDto.CaseId; } machineAreaTimeRegistration.SDKSiteId = machineAreaSite.MicrotingSdkSiteId; } CheckListValue dataElement = (CheckListValue)replyElement.ElementList[0]; foreach (var field in dataElement.DataItemList) { Field f = (Field)field; if (f.Label.ToLower().Contains("start/stop tid")) { Console.WriteLine($"The field is {f.Label}"); FieldValue fv = f.FieldValues[0]; String fieldValue = fv.Value; Console.WriteLine($"Current field_value is {fieldValue}"); int registeredTime = int.Parse(fieldValue.Split("|")[3]); Console.WriteLine($"We are setting the registered time to {registeredTime.ToString()}"); machineAreaTimeRegistration.SDKFieldValueId = fv.Id; machineAreaTimeRegistration.TimeInSeconds = (registeredTime / 1000); machineAreaTimeRegistration.TimeInMinutes = ((registeredTime / 1000) / 60); machineAreaTimeRegistration.TimeInHours = ((registeredTime / 1000) / 3600); } } #endregion await machineAreaTimeRegistration.Create(_dbContext).ConfigureAwait(false); } }
public async Task Handle(OuterInnerResourceDeleteFromServer message) { OuterInnerResourceSite outerInnerResourceSite = await _dbContext.OuterInnerResourceSites.SingleOrDefaultAsync(x => x.Id == message.OuterInnerResourceSiteId); if (outerInnerResourceSite.MicrotingSdkCaseId != null) { await _core.CaseDelete((int)outerInnerResourceSite.MicrotingSdkCaseId); } }
public async Task Handle(eFormCompleted message) { WriteLogEntry($"eFormCompletedHandler.Handle: we got called for message.caseId {message.caseId} and message.checkId {message.checkId}"); await using MicrotingDbContext microtingDbContext = _sdkCore.DbContextHelper.GetDbContext(); Language language = await microtingDbContext.Languages.SingleAsync(x => x.LanguageCode == "da"); CaseDto caseDto = await _sdkCore.CaseLookup(message.caseId, message.checkId).ConfigureAwait(false); ReplyElement replyElement = await _sdkCore.CaseRead(message.caseId, message.checkId, language).ConfigureAwait(false); OuterInnerResourceSite machineAreaSite = _dbContext.OuterInnerResourceSites.SingleOrDefault(x => x.MicrotingSdkCaseId == message.caseId); var machineAreaTimeRegistrations = await _dbContext.ResourceTimeRegistrations.Where(x => // x.DoneAt == replyElement.DoneAt && x.SDKCaseId == (int)caseDto.CaseId && x.SDKSiteId == machineAreaSite.MicrotingSdkSiteId).ToListAsync().ConfigureAwait(false); if (machineAreaTimeRegistrations.Count == 0) { ResourceTimeRegistration machineAreaTimeRegistration = new ResourceTimeRegistration(); if (machineAreaSite != null) { var outerInnerResource = await _dbContext.OuterInnerResources.SingleOrDefaultAsync(x => x.Id == machineAreaSite.OuterInnerResourceId); machineAreaTimeRegistration.OuterResourceId = outerInnerResource.OuterResourceId; machineAreaTimeRegistration.InnerResourceId = outerInnerResource.InnerResourceId; machineAreaTimeRegistration.DoneAt = replyElement.DoneAt; if (caseDto.CaseId != null) { machineAreaTimeRegistration.SDKCaseId = (int)caseDto.CaseId; } machineAreaTimeRegistration.SDKSiteId = machineAreaSite.MicrotingSdkSiteId; } CheckListValue dataElement = (CheckListValue)replyElement.ElementList[0]; foreach (var field in dataElement.DataItemList) { Field f = (Field)field; if (f.Label.ToLower().Contains("start/stop tid")) { try { Console.WriteLine($"The field is {f.Label}"); FieldValue fv = f.FieldValues[0]; String fieldValue = fv.Value; if (!string.IsNullOrEmpty(fieldValue)) { Console.WriteLine($"Current field_value is {fieldValue}"); int registeredTime = int.Parse(fieldValue.Split("|")[3]); Console.WriteLine($"We are setting the registered time to {registeredTime.ToString()}"); machineAreaTimeRegistration.SDKFieldValueId = fv.Id; machineAreaTimeRegistration.TimeInSeconds = (registeredTime / 1000); machineAreaTimeRegistration.TimeInMinutes = ((registeredTime / 1000) / 60); machineAreaTimeRegistration.TimeInHours = ((registeredTime / 1000) / 3600); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } } await machineAreaTimeRegistration.Create(_dbContext).ConfigureAwait(false); } else { if (machineAreaTimeRegistrations.Count > 1) { int i = 0; foreach (ResourceTimeRegistration machineAreaTimeRegistration in machineAreaTimeRegistrations) { if (i > 0) { await machineAreaTimeRegistration.Delete(_dbContext); } i++; Console.WriteLine("More than one time registration found"); } } else { Console.WriteLine("One time registration found"); } } }
private async Task UpdateSitesDeployed( OuterInnerResource outerInnerResource, List <Site> sites, int eFormId) { WriteLogEntry("OuterInnerResourceUpdateHandler: UpdateSitesDeployed called"); var siteIds = new List <int>(); if (outerInnerResource.WorkflowState == Constants.WorkflowStates.Created) { if (sites.Any()) { foreach (var site in sites) { siteIds.Add(site.Id); var outerInnerResourceSites = await _dbContext.OuterInnerResourceSites.Where( x => x.MicrotingSdkSiteId == site.Id && x.OuterInnerResourceId == outerInnerResource.Id && x.WorkflowState == Constants.WorkflowStates.Created).ToListAsync(); if (!outerInnerResourceSites.Any()) { var outerInnerResourceSite = new OuterInnerResourceSite { OuterInnerResourceId = outerInnerResource.Id, MicrotingSdkSiteId = site.Id, MicrotingSdkeFormId = eFormId }; await outerInnerResourceSite.Create(_dbContext); await _bus.SendLocal(new OuterInnerResourcePosteForm(outerInnerResourceSite.Id, eFormId)); } else { if (outerInnerResourceSites.First().MicrotingSdkCaseId == null) { await _bus.SendLocal(new OuterInnerResourcePosteForm( outerInnerResourceSites.First().Id, eFormId)); } } } } } var sitesConfigured = _dbContext.OuterInnerResourceSites.Where(x => x.OuterInnerResourceId == outerInnerResource.Id && x.WorkflowState != Constants.WorkflowStates.Removed).ToList(); WriteLogEntry("OuterInnerResourceUpdateHandler: sitesConfigured looked up"); if (sitesConfigured.Any()) { foreach (var outerInnerResourceSite in sitesConfigured) { if (!siteIds.Contains(outerInnerResourceSite.MicrotingSdkSiteId) || outerInnerResource.WorkflowState == Constants.WorkflowStates.Removed) { if (outerInnerResourceSite.MicrotingSdkCaseId != null) { await outerInnerResourceSite.Delete(_dbContext); await _bus.SendLocal(new OuterInnerResourceDeleteFromServer(outerInnerResourceSite.Id)); } } } } }