Beispiel #1
0
        public static void SaveUploaderConfig(string data)
        {
            try
            {
                MongoManager mongoManager = new MongoManager();

                List <UploaderConfigItem> itemsSaved     = new List <UploaderConfigItem>();
                List <UploaderConfigItem> itemsExisting  = new List <UploaderConfigItem>();
                List <UploaderConfigItem> alreadyChecked = new List <UploaderConfigItem>();

                itemsSaved    = JsonConvert.DeserializeObject <List <UploaderConfigItem> >(data);
                itemsExisting = mongoManager.SelectFromCollection(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter());

                foreach (UploaderConfigItem item in itemsSaved)
                {
                    if (itemsExisting.Any(x => x.UploaderId == item.UploaderId))                                    //Item schon vorhanden
                    {
                        if (itemsExisting.Any(x => x.UploaderId == item.UploaderId && x.Position != item.Position)) //Positionseigenschaft hat sich geändert
                        {
                            List <BsonElement> elements = new List <BsonElement>
                            {
                                new BsonElement(Constants.Database.Fields.UploaderConfig.Id, BsonValue.Create(item.UploaderId)),
                                new BsonElement(Constants.Database.Fields.UploaderConfig.Position, BsonValue.Create(item.Position))
                            };

                            BsonDocument document = new BsonDocument(elements);
                            mongoManager.Delete(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter(item.UploaderId));
                            mongoManager.Insert(document, new CollectionItem(Constants.Database.Settings));
                        }
                    }
                    else    //Item noch nicht vorhanden
                    {
                        List <BsonElement> elements = new List <BsonElement>
                        {
                            new BsonElement(Constants.Database.Fields.UploaderConfig.Id, BsonValue.Create(item.UploaderId)),
                            new BsonElement(Constants.Database.Fields.UploaderConfig.Position, BsonValue.Create(item.Position))
                        };

                        BsonDocument document = new BsonDocument(elements);
                        mongoManager.Insert(document, new CollectionItem(Constants.Database.Settings));
                    }
                }

                //Deleting
                itemsExisting = mongoManager.SelectFromCollection(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter());

                if (itemsSaved.Count != itemsExisting.Count)
                {
                    foreach (UploaderConfigItem item in itemsExisting)
                    {
                        if (!itemsSaved.Any(x => x.UploaderId == item.UploaderId))
                        {
                            mongoManager.Delete(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter(item.UploaderId));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingManager.LogError(System.Reflection.MethodBase.GetCurrentMethod().Name, ex);
            }
        }