Beispiel #1
0
            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);
            }