public Task <IEnumerable <LookupDto> > Handle(SyncHostCommand request, CancellationToken cancellationToken) { var hosts = request.Hosts ?? new List <LookupDto>(); foreach (var apphosts in hosts) { var localhost = _db.Host.FirstOrDefault(u => u.Id == apphosts.Id); DataModels.Colony.Host host = new DataModels.Colony.Host() { Id = apphosts.Id, Name = apphosts.Name, IsActive = apphosts.IsActive, CreatedDate = apphosts.CreatedDate, CreatedBy = apphosts.CreatedBy, LastModifiedDate = apphosts.LastModifiedDate, LastModifiedBy = apphosts.LastModifiedBy }; if (localhost == null) { _db.Host.Add(host); } else if (apphosts.LastModifiedDate > localhost.LastModifiedDate) { _db.Host.Remove(localhost); _db.Host.Add(host); } else { apphosts.Name = localhost.Name; apphosts.IsActive = localhost.IsActive; apphosts.CreatedDate = localhost.CreatedDate; apphosts.CreatedBy = localhost.CreatedBy; apphosts.LastModifiedDate = localhost.LastModifiedDate; apphosts.LastModifiedBy = localhost.LastModifiedBy; } } var apphostsIDs = hosts.Select(u => u.Id).ToList(); var uniqueLocalhosts = _db.Host.Where(u => !apphostsIDs.Contains(u.Id)).Select(u => new LookupDto() { Id = u.Id, Name = u.Name, IsActive = u.IsActive, CreatedDate = u.CreatedDate, CreatedBy = u.CreatedBy, LastModifiedDate = u.LastModifiedDate, LastModifiedBy = u.LastModifiedBy }).ToList(); hosts.AddRange(uniqueLocalhosts); _db.SaveChanges(); return(Task.FromResult <IEnumerable <LookupDto> >(hosts)); }
public async Task <Guid> Handle(AddHostCommand request, CancellationToken cancellationToken) { var host = new DataModels.Colony.Host() { Id = request.Id, Name = request.Name, IsActive = request.IsActive }; await _db.Host.AddAsync(host, cancellationToken); _db.SaveChanges(); return(host.Id); }