public Task <IEnumerable <LookupDto> > Handle(SyncAreaCommand request, CancellationToken cancellationToken) { var areas = request.Areas ?? new List <LookupDto>(); foreach (var appAreas in areas) { var localArea = _db.Area.FirstOrDefault(u => u.Id == appAreas.Id); DataModels.Colony.Area area = new DataModels.Colony.Area() { Id = appAreas.Id, Name = appAreas.Name, IsActive = appAreas.IsActive, CreatedDate = appAreas.CreatedDate, CreatedBy = appAreas.CreatedBy, LastModifiedDate = appAreas.LastModifiedDate, LastModifiedBy = appAreas.LastModifiedBy }; if (localArea == null) { _db.Area.Add(area); } else if (appAreas.LastModifiedDate > localArea.LastModifiedDate) { _db.Area.Remove(localArea); _db.Area.Add(area); } else { appAreas.Name = localArea.Name; appAreas.IsActive = localArea.IsActive; appAreas.CreatedDate = localArea.CreatedDate; appAreas.CreatedBy = localArea.CreatedBy; appAreas.LastModifiedDate = localArea.LastModifiedDate; appAreas.LastModifiedBy = localArea.LastModifiedBy; } } var appAreasIDs = areas.Select(u => u.Id).ToList(); var uniqueLocalAreas = _db.Area.Where(u => !appAreasIDs.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(); areas.AddRange(uniqueLocalAreas); _db.SaveChanges(); return(Task.FromResult <IEnumerable <LookupDto> >(areas)); }
public async Task <Guid> Handle(AddAreaCommand request, CancellationToken cancellationToken) { var area = new DataModels.Colony.Area() { Id = request.Id, Name = request.Name, IsActive = request.IsActive }; await _db.Area.AddAsync(area, cancellationToken); _db.SaveChanges(); return(area.Id); }