Esempio n. 1
0
 public void RemoveResource(int objectId)
 {
     if (objectIdToResourceMap.ContainsKey(objectId))
     {
         objectIdToResourceMap.Remove(objectId);
         ResourceRemoved?.Invoke(this, new ResourceRemoveEventArgs(objectId));
     }
 }
Esempio n. 2
0
        public void Clear()
        {
            if (ResourceRemoved != null)
            {
                ResourceRemoveEventArgs m = new ResourceRemoveEventArgs(-1);
                foreach (System.EventHandler <ResourceRemoveEventArgs> e in ResourceRemoved?.GetInvocationList())
                {
                    e.BeginInvoke(this, m, e.EndInvoke, null);
                }
            }

            objectIdToResourceMap.Clear();
        }
        public void Clear()
        {
            if (ResourceRemoved != null)
            {
                ResourceRemoveEventArgs m = new ResourceRemoveEventArgs(-1);
                foreach (System.EventHandler <ResourceRemoveEventArgs> e in ResourceRemoved?.GetInvocationList())
                {
                    Task.Run(() => e.Invoke(this, m));
                }
            }

            objectIdToResourceMap.Clear();
        }
Esempio n. 4
0
        public void RemoveResource(int objectId)
        {
            if (objectIdToResourceMap.ContainsKey(objectId))
            {
                objectIdToResourceMap.Remove(objectId);

                if (ResourceRemoved != null)
                {
                    ResourceRemoveEventArgs m = new ResourceRemoveEventArgs(objectId);
                    foreach (System.EventHandler <ResourceRemoveEventArgs> e in ResourceRemoved?.GetInvocationList())
                    {
                        e.BeginInvoke(this, m, e.EndInvoke, null);
                    }
                }
            }
        }
Esempio n. 5
0
    public bool Remove(IResource resource)
    {
        var objectId = resource.Instance.Variables["objectId"].ToString();
        var filter   = Builders <BsonDocument> .Filter.Eq("_id", new BsonObjectId(new ObjectId(objectId)));

        this.database.DropCollection("record_" + objectId);
        resourcesCollection.DeleteOne(filter);

        count--;

        ResourceRemoved?.Invoke(resource);


        Instance.Modified("Count");

        return(true);
    }
 private void OnResourceRemoved(object sender, IPublicResource publicResource)
 {
     ResourceRemoved?.Invoke(this, publicResource.Proxify(TypeController));
 }
Esempio n. 7
0
 private void RaiseResourceRemoved(IPublicResource newResource)
 {
     ResourceRemoved?.Invoke(this, newResource);
 }
Esempio n. 8
0
 public void Clear()
 {
     ResourceRemoved?.Invoke(this, new ResourceRemoveEventArgs(-1));
     objectIdToResourceMap.Clear();
 }
Esempio n. 9
0
        public async Task SaveResources(IEnumerable <ExtraResource> saveItems)
        {
            var removedList  = new List <ExtraResource>();
            var modifiedList = new List <ExtraResource>();
            var addedList    = new List <ExtraResource>();
            var existIds     = new List <Guid>();

            foreach (var saveItem in saveItems)
            {
                var resource = _Resources.FirstOrDefault(r => r.Id == saveItem.Id);
                if (resource == null)
                {
                    // 추가 대상
                    addedList.Add(saveItem);
                }
                else
                {
                    existIds.Add(saveItem.Id);

                    // 수정 대상
                    if (resource.Name != saveItem.Name ||
                        resource.Type != saveItem.Type ||
                        resource.Price != saveItem.Price)
                    {
                        // 수정
                        resource.Name  = saveItem.Name;
                        resource.Type  = (ResourceType)saveItem.Type;
                        resource.Price = (double)saveItem.Price;

                        modifiedList.Add(resource);
                    }
                }
            }

            // 삭제 대상
            removedList.AddRange(_Resources.Where(r => existIds.Contains(r.Id) == false));

            // 추가
            foreach (var addItem in addedList)
            {
                addItem.Id = Guid.NewGuid();
                _Resources.Add(addItem);
            }

            // 삭제
            _Resources.RemoveAll(r => removedList.Contains(r));

            await _ResourceRepo.SaveResources(_Resources);

            if (addedList.Count > 0)
            {
                Debug.WriteLine($"추가: {string.Join(" ", addedList.Select(d => $"{d.Id}_{d.Name}"))}");
            }
            if (modifiedList.Count > 0)
            {
                Debug.WriteLine($"수정: {string.Join(" ", modifiedList.Select(d => $"{d.Id}_{d.Name}"))}");

                // modify to packing template
                if (_PackingTemplates != null && _PackingTemplates.Count > 0)
                {
                    foreach (var packingTemplate in _PackingTemplates)
                    {
                        foreach (var packResource in packingTemplate.Resources)
                        {
                            var modifiedResource = modifiedList.FirstOrDefault(d => d.Id.Equals(packResource.Resource.Id));
                            if (modifiedResource != null)
                            {
                                packResource.Resource.Name  = modifiedResource.Name;
                                packResource.Resource.Price = modifiedResource.Price;
                                packResource.Resource.Type  = modifiedResource.Type;
                            }
                        }
                    }

                    await _PackingTempalteRepo.Save(_PackingTemplates);
                }

                ResourceModified?.Invoke(this, modifiedList);
            }
            if (removedList.Count > 0)
            {
                Debug.WriteLine($"삭제: {string.Join(" ", removedList.Select(d => $"{d.Id}_{d.Name}"))}");

                // remove to packing template
                if (_PackingTemplates != null && _PackingTemplates.Count > 0)
                {
                    var removedResourceIds = removedList.Select(n => n.Id).ToList();
                    foreach (var packingTemplate in _PackingTemplates.ToList())
                    {
                        foreach (var packResource in packingTemplate.Resources.ToList())
                        {
                            if (removedResourceIds.Contains(packResource.Resource.Id))
                            {
                                packingTemplate.Resources.Remove(packResource);
                            }
                        }

                        if (packingTemplate.Resources.Count < 1)
                        {
                            _PackingTemplates.Remove(packingTemplate);
                        }
                    }

                    await _PackingTempalteRepo.Save(_PackingTemplates);
                }

                ResourceRemoved?.Invoke(this, removedList);
            }
        }
Esempio n. 10
0
 private void OnResourceRemoved(IResource resource) =>
 ResourceRemoved?.Invoke(this, new ResourceEventArgs(resource));