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));
                    }
                }
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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));
                        }
                    }
                }
            }
        }