Beispiel #1
0
 public Results OperateCar(ref Car item, DaoOperations operation)
 {
     return(loadedDriver.OperateCar(ref item, operation));
 }
Beispiel #2
0
        public Results OperateCar(ref Car item, DaoOperations operation)
        {
            //Resolve a conexão com o banco de dados
            if (this.connect())
            {
                //pega a coleção do mongoDB
                var carsCollection = db.GetCollection <BsonDocument>("cars");

                //verifica se está pesquisando
                if (operation == DaoOperations.Search)
                {
                    List <Car> result = new List <Car>();


                    //prepara os campos da pesquisa
                    JSON jm = new JSON();

                    if (item.veichle != "")
                    {
                        jm.setString("$or[" + jm.getChildsNames("$or").Count + "].veichle", "__regexs__" + item.veichle + "__regexe__");
                    }
                    if (item.vendor != "")
                    {
                        jm.setString("$or[" + jm.getChildsNames("$or").Count + "].vendor", "__regexs__" + item.vendor + "__regexe__");
                    }
                    if (item.description != "")
                    {
                        jm.setString("$or[" + jm.getChildsNames("$or").Count + "].description", "__regexs__" + item.description + "__regexe__");
                    }


                    string json = jm.ToJson();
                    json = json.Replace("\"__regexs__", "/.*");
                    json = json.Replace("__regexe__\"", "*./");

                    if (!jm.contains("$or"))
                    {
                        json = "{}";
                    }


                    //realiza a busca no banco de dados
                    List <BsonDocument> cursor = carsCollection.Find(json).ToList();


                    //converte os dados retornados do banco de dados
                    foreach (BsonDocument curr in cursor)
                    {
                        result.Add(BsonDocumentToCar(curr));
                    }

                    return(new Results
                    {
                        sucess = true,
                        message = "ok",
                        data = result
                    });
                }
                //verifica se está solicitando a população do objeto Item
                else if (operation == DaoOperations.Populate)
                {
                    List <Car> result = new List <Car>();


                    //prepara os campos da pesquisa
                    JObject jm = new JObject();
                    jm.Add(new JProperty("_id", item.id));
                    //realiza a busca no banco de dados
                    List <BsonDocument> cursor = carsCollection.Find(jm.ToJson()).ToList();

                    if (cursor.Count > 0)
                    {
                        item = BsonDocumentToCar(cursor[0]);
                        return(new Results
                        {
                            sucess = true,
                            message = "ok",
                            data = item
                        });
                    }
                    else
                    {
                        return(new Results
                        {
                            sucess = false,
                            message = "Object not found"
                        });
                    }
                }
                //verifica se está tentando inserir
                else if (operation == DaoOperations.Insert)
                {
                    //serializa o objeto
                    string jsonItem = Newtonsoft.Json.JsonConvert.SerializeObject(item);

                    //insere os dados no banco
                    carsCollection.InsertOne(BsonDocument.Parse(jsonItem));

                    return(new Results
                    {
                        sucess = true,
                        message = "ok"
                    });
                }
                else if (operation == DaoOperations.Update)
                {
                }
                else if (operation == DaoOperations.Delete)
                {
                }


                return(new Results
                {
                    sucess = false,
                    message = "Internal error"
                });
            }
            else
            {
                return(new Results
                {
                    sucess = false,
                    message = "MongoDB Connection error"
                });
            }
        }