コード例 #1
0
        public async Task <HttpResponseMessage> SyncWithTextyOrgUaWaterService()
        {
            var service = new TextyOrgUaWaterService();
            var data    = await service.GetData();

            using (var transaction = _dbContext.BeginTransaction())
            {
                try
                {
                    //characteristics
                    var characteristicsNames = data.Select(i => i.Key).Distinct(StringComparer.InvariantCultureIgnoreCase);
                    var serviceDescription   = "Synced by TextyOrgUaWaterService";
                    var characteristicMap    = await MapCharateristicsNamesAndCreateWhetherDoesNotExist(characteristicsNames, serviceDescription);

                    //objects
                    var objects = data.GroupBy(i => i.River, StringComparer.InvariantCultureIgnoreCase)
                                  .Select(group => new
                    {
                        Points = group.GroupBy(p => p.Name, StringComparer.InvariantCultureIgnoreCase)
                                 .Select(group2 => new
                        {
                            Name = group2.Key,
                            Info = new
                            {
                                Code       = group2.FirstOrDefault().Code,
                                Laboratory = group2.FirstOrDefault().Laboratory
                            },
                            Values = group2.Select(v => new
                            {
                                Id    = v.Id,
                                Date  = v.Date,
                                Key   = v.Key,
                                Value = v.Value
                            })
                        }),
                        River = group.Key
                    });

                    var rootObject = await _dbContext.HierarchyObjectContext.Entities.SingleAsync(o => o.Level == 0);

                    foreach (var river in objects)
                    {
                        Guid riverId = await GetObjectIdAndCreateWhetherDoesNotExist(river.River, serviceDescription, rootObject);

                        var riverObject = await _dbContext.HierarchyObjectContext.Entities.FirstOrDefaultAsync(o => o.Id == riverId);

                        foreach (var point in river.Points)
                        {
                            Guid pointId = await GetObjectIdAndCreateWhetherDoesNotExist(point.Name, serviceDescription, riverObject);

                            foreach (var value in point.Values)
                            {
                                var entity = new NumberCharacteristicValue
                                {
                                    CharacteristicId    = characteristicMap[value.Key],
                                    HierarchyObjectId   = pointId,
                                    CreationDate        = value.Date,
                                    Value               = value.Value,
                                    OwnerId             = User.Identity.Name,
                                    SubjectOfMonitoring = SubjectOfMonitoringConstants.CLEAR_WATER
                                };
                                await _dbContext.CharacteristicValueDbSetManager.CreateAsync(entity);
                            }
                        }
                    }

                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                }
            }

            return(Request.CreateResponse(HttpStatusCode.Created));
        }
コード例 #2
0
 public async Task GetReport()
 {
     var service = new TextyOrgUaWaterService();
     var data    = await service.GetData();
 }