public bool Insert(T entity)
        {
            var parms         = ParametersMapper.RetornaParametros(entity, _entityMap, QueryType.Insert);
            var insertCommand = QueryMapper.ReturnSqlQuery(_entityMap, QueryType.InsertWithCount);

            using IDbConnection db = new SqlConnection(_connectionString);
            return(db.ExecuteScalar <int>(insertCommand, parms, commandType: CommandType.Text) > 0);
        }
        public T GetById(T entity)
        {
            var parms             = ParametersMapper.RetornaParametros(entity, _entityMap, QueryType.SelectById);
            var selectByIdCommand = QueryMapper.ReturnSqlQuery(_entityMap, QueryType.SelectById);

            using IDbConnection db = new SqlConnection(_connectionString);
            return(db.Query <T>(selectByIdCommand, parms, commandType: CommandType.Text).FirstOrDefault());
        }
        public T GetById(dynamic id)
        {
            DynamicParameters parms = ParametersMapper.RetornaParametroPrimaryKeyUnica <T>(id, _entityMap);
            var selectAllCommand    = QueryMapper.ReturnSqlQuery(_entityMap, QueryType.SelectById);

            using IDbConnection db = new SqlConnection(_connectionString);
            return(db.Query <T>(selectAllCommand, parms, commandType: CommandType.Text).FirstOrDefault());
        }
        public QueryResult Insert(List <T> entityList)
        {
            var parms         = ParametersMapper.RetornaParametros(entityList, _entityMap, QueryType.InsertMultiple);
            var insertCommand = QueryMapper.ReturnSqlQuery(entityList.Count, _entityMap, QueryType.InsertMultiple);

            using IDbConnection db = new SqlConnection(_connectionString);
            var queryReturn = db.Query(insertCommand, parms, commandType: CommandType.Text).FirstOrDefault();

            return(GetSqlTransactionReturn(queryReturn));
        }
        public ClientGeneratorModel BuildModel()
        {
            warnings               = new Dictionary <string, string>();
            classesNames           = new Collection <string>();
            classes                = new Collection <ClassObject>();
            classesObjectsRegistry = new Dictionary <string, ClassObject>();
            uriParameterObjects    = new Dictionary <string, ApiObject>();

            schemaRequestObjects  = GetRequestObjects();
            schemaResponseObjects = GetResponseObjects();

            CleanProperties(schemaRequestObjects);
            CleanProperties(schemaResponseObjects);

            var parentClass = new ClassObject {
                Name = rootClassName, Description = "Main class for grouping root resources. Nested resources are defined as properties. The constructor can optionally receive an URL and HttpClient instance to override the default ones."
            };

            classesNames.Add(parentClass.Name);
            classes.Add(parentClass);
            classesObjectsRegistry.Add(rootClassName, parentClass);

            var classObjects = GetClasses(raml.Resources, null, parentClass, null);

            SetClassesProperties(classesObjectsRegistry[rootClassName]);

            var apiRequestObjects  = apiRequestGenerator.Generate(classObjects);
            var apiResponseObjects = apiResponseGenerator.Generate(classObjects);

            return(new ClientGeneratorModel
            {
                Namespace = NetNamingMapper.GetNamespace(raml.Title),
                RequestObjects = schemaRequestObjects,
                ResponseObjects = schemaResponseObjects,
                QueryObjects = queryObjects,
                HeaderObjects = headerObjects,
                ApiRequestObjects = apiRequestObjects,
                ApiResponseObjects = apiResponseObjects,
                ResponseHeaderObjects = responseHeadersObjects,
                BaseUriParameters = ParametersMapper.Map(raml.BaseUriParameters),
                BaseUri = raml.BaseUri,
                Security = SecurityParser.GetSecurity(raml),
                Version = raml.Version,
                Warnings = warnings,
                Classes = classObjects.Where(c => c.Name != rootClassName).ToArray(),
                Root = classObjects.First(c => c.Name == rootClassName),
                UriParameterObjects = uriParameterObjects
            });
        }
        public void Insert(T entity, IDbConnection cnn, IDbTransaction trans)
        {
            if (cnn == null)
            {
                throw new ArgumentNullException(nameof(cnn), "Conexão não pode ser nula");
            }

            if (trans == null)
            {
                throw new ArgumentNullException(nameof(trans), "Transação não pode ser nula");
            }

            var parms         = ParametersMapper.RetornaParametros <T>(entity, _entityMap, QueryType.Insert);
            var insertCommand = QueryMapper.ReturnSqlQuery <T>(_entityMap, QueryType.Insert);

            cnn.Query(insertCommand, parms, trans, commandType: CommandType.Text);
        }
        public void should_map_paremeters()
        {
            var dynRaml = new Dictionary <string, object>();

            dynRaml.Add("type", "string");
            dynRaml.Add("displayName", "ParameterName");
            dynRaml.Add("description", "this is the description");
            var parameters = new Dictionary <string, Parameter> {
                { "one", new ParameterBuilder().Build(dynRaml) }
            };
            var generatorParameters = ParametersMapper.Map(parameters);

            Assert.AreEqual(parameters.Count, generatorParameters.Count());
            Assert.AreEqual(parameters.First().Value.Type, generatorParameters.First().Type);
            Assert.AreEqual("one", generatorParameters.First().Name);
            Assert.AreEqual(parameters.First().Value.Description, generatorParameters.First().Description);
        }
        public void Delete(T entity, IDbConnection cnn, IDbTransaction trans)
        {
            if (cnn == null)
            {
                throw new ArgumentNullException("cnn", "Conexão não pode ser nula");
            }

            if (trans == null)
            {
                throw new ArgumentNullException("trans", "Transação não pode ser nula");
            }

            var parms     = ParametersMapper.RetornaParametros(entity, _entityMap, QueryType.Delete);
            var deleteSql = QueryMapper.ReturnSqlQuery(_entityMap, QueryType.Delete);

            using IDbConnection db = new SqlConnection(_connectionString);
            cnn.Execute(deleteSql, parms, trans, commandType: CommandType.Text);
        }
        public ClientGeneratorModel BuildModel()
        {
            warnings               = new Dictionary <string, string>();
            classesNames           = new Collection <string>();
            classes                = new Collection <ClassObject>();
            classesObjectsRegistry = new Dictionary <string, ClassObject>();
            uriParameterObjects    = new Dictionary <string, ApiObject>();
            enums = new Dictionary <string, ApiEnum>();

            //new RamlTypeParser(raml.Shapes, schemaObjects, ns, enums, warnings).Parse();

            ParseSchemas();
            schemaRequestObjects  = GetRequestObjects();
            schemaResponseObjects = GetResponseObjects();

            FixEnumNamesClashing();
            //FixTypes(schemaObjects.Values);
            //FixTypes(schemaRequestObjects.Values);
            //FixTypes(schemaResponseObjects.Values);

            ReconstructInheritance();

            CleanProperties(schemaObjects);
            CleanProperties(schemaRequestObjects);
            CleanProperties(schemaResponseObjects);

            HandleScalarTypes();

            clientMethodsGenerator = new ClientMethodsGenerator(raml, schemaResponseObjects, uriParameterObjects,
                                                                queryObjects, headerObjects, responseHeadersObjects, schemaRequestObjects, linkKeysWithObjectNames,
                                                                schemaObjects, enums);

            var parentClass = new ClassObject {
                Name = rootClassName, Description = "Main class for grouping root resources. Nested resources are defined as properties. The constructor can optionally receive an URL and HttpClient instance to override the default ones."
            };

            classesNames.Add(parentClass.Name);
            classes.Add(parentClass);
            classesObjectsRegistry.Add(rootClassName, parentClass);

            var classObjects = GetClasses(raml.WebApi.EndPoints, null, parentClass, null, new Dictionary <string, Parameter>());

            SetClassesProperties(classesObjectsRegistry[rootClassName]);

            var apiRequestObjects  = apiRequestGenerator.Generate(classObjects);
            var apiResponseObjects = apiResponseGenerator.Generate(classObjects);


            //apiObjectsCleaner = new ApiObjectsCleaner(schemaRequestObjects, schemaResponseObjects, schemaObjects);
            uriParametersGenerator = new UriParametersGenerator(schemaObjects);

            //CleanNotUsedObjects(classObjects);



            return(new ClientGeneratorModel
            {
                BaseNamespace = baseNamespace,
                ModelsNamespace = modelsNamespace,
                SchemaObjects = schemaObjects,
                RequestObjects = schemaRequestObjects,
                ResponseObjects = schemaResponseObjects,
                QueryObjects = queryObjects,
                HeaderObjects = headerObjects,

                ApiRequestObjects = apiRequestObjects.ToArray(),
                ApiResponseObjects = apiResponseObjects.ToArray(),
                ResponseHeaderObjects = responseHeadersObjects,

                BaseUriParameters = ParametersMapper.Map(raml.WebApi.BaseUriParameters).ToArray(),
                BaseUri = raml.WebApi.Servers.Any() ? raml.WebApi.Servers.First() : null,
                Security = SecurityParser.GetSecurity(raml.WebApi),
                Version = raml.WebApi.Version,
                Warnings = warnings,
                Classes = classObjects.Where(c => c.Name != rootClassName).ToArray(),
                Root = classObjects.First(c => c.Name == rootClassName),
                UriParameterObjects = uriParameterObjects,
                Enums = Enums.ToArray()
            });
        }