Beispiel #1
0
        private async Task <List <MeterBulkUploadResponseDto> > ProcessRequestMpans(ModelDbContext dbContext,
                                                                                    Site associatedSite, MpanDto[] mpans)
        {
            var mpanResults = new List <MeterBulkUploadResponseDto>();

            foreach (var mpanDto in mpans)
            {
                var existing = await dbContext.RetrieveMpanByCore(mpanDto.MpanCore);

                var mpanId = existing?.Id ?? Guid.NewGuid();

                string mpanState;
                if (existing != null)
                {
                    await SoftUpdateMpanFields(dbContext, associatedSite, existing, mpanDto);

                    await dbContext.Update(existing);

                    mpanState = BulkUploadResponseStates.Updated;
                }
                else
                {
                    var mpan = Mapper.Map <Mpan>(mpanDto);
                    mpan.Id   = mpanId;
                    mpan.Site = associatedSite;

                    await dbContext.Add(mpan);

                    mpanState = BulkUploadResponseStates.Created;
                }

                mpanResults.Add(new MeterBulkUploadResponseDto
                {
                    Core  = mpanDto.MpanCore,
                    Id    = mpanId,
                    State = mpanState
                });
            }

            return(mpanResults);
        }