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); }