private async Task <BulkUploadSitesResponseDto> ProcessSite(ModelDbContext dbContext, Guid accountId, QualifiedSiteDto siteDto) { var existingSite = await dbContext.RetrieveSiteByCode(siteDto.SiteCode); var siteExists = existingSite != null; var siteId = existingSite?.Id ?? Guid.NewGuid(); string siteState; if (siteExists) { await SoftUpdateSiteFields(dbContext, existingSite, siteDto); await dbContext.Update(existingSite); siteState = BulkUploadResponseStates.Updated; } else { var mappedSite = Mapper.Map <Site>(siteDto); mappedSite.Id = siteId; await dbContext.Add(mappedSite); var tenancyPeriod = new TenancyPeriod { Id = Guid.NewGuid(), AccountId = accountId, SiteId = siteId, Site = mappedSite, EffectiveFrom = DateTime.MinValue, EffectiveTo = DateTime.MaxValue }; await dbContext.Add(tenancyPeriod); siteState = BulkUploadResponseStates.Created; } return(new BulkUploadSitesResponseDto { Id = siteId, SiteCode = siteDto.SiteCode, State = siteState }); }