Ejemplo n.º 1
0
        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
            });
        }