Ejemplo n.º 1
0
        public async Task <int> InsertAsync(Claim claim)
        {
            var query = $@"INSERT INTO `Vanlune`.`Claim`
                        (`name`,
                        `type`,
                        `value`)
                        VALUES
                        (@{nameof(Claim.Name)},
                        @{nameof(Claim.ClaimType)},
                        @{nameof(Claim.ClaimValue)});
                        SELECT LAST_INSERT_ID();";

            using var connection = _mySqlConnHelper.MySqlConnection();

            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }

            var result = await connection.QueryAsync <int>(query, new
            {
                claim.Name,
                claim.ClaimType,
                claim.ClaimValue
            });

            return(result.Single());
        }
Ejemplo n.º 2
0
        public async Task <int> AddAsync(Order order)
        {
            var query = $@"INSERT INTO `Vanlune`.`Orders`
                        (accountId,
                        `productId`,
                        `quantity`,
                        `price`,
                        `amount`,
                        `idStatus`,
                        `payment`,
                        `variant`,
                        `discount`
                        `paymentStatus`,
                        `externalId`)
                        VALUES
                        (@accountId,
                        @productId,
                        @{nameof(Order.Quantity)},
                        @{nameof(Order.Price)},
                        @{nameof(Order.Amount)},
                        @{nameof(Order.Status)},
                        @{nameof(Order.Payment)},
                        @{nameof(Order.Variant)},
                        @{nameof(Order.Discount)},
                        @{nameof(Order.PaymentStatus)},
                        @{nameof(Order.ExternalId)});
                        SELECT LAST_INSERT_ID();";

            using var connection = _mySqlConnHelper.MySqlConnection();

            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }

            var result = await connection.QueryAsync <int>(query, new
            {
                accountId = order.User.Id,
                productId = order.Product.Id,
                order.Quantity,
                order.Price,
                order.Amount,
                order.Status,
                order.Payment,
                Variant = JsonConvert.SerializeObject(order.Variant),
                order.Discount,
                order.PaymentStatus,
                order.ExternalId
            });

            return(result.Single());
        }
        public async Task AddUsersRole(int[] usersId, int roleId)
        {
            using var connection = _mySqlConnHelper.MySqlConnection();

            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }

            var transaction = connection.BeginTransaction();

            try
            {
                foreach (var userId in usersId)
                {
                    var query = $@"INSERT INTO `Vanlune`.`RoleUser`
                        (`idUser`,
                        `idRoles`)
                        SELECT * FROM 
                        (SELECT @idUser,@idRoles) AS tmp
                        WHERE NOT EXISTS (
                            SELECT idUser,idRoles  
                            FROM Vanlune.RoleUser 
                            WHERE idUser=@idUser 
                            AND idRoles=@idRoles
                        );";
                    await connection.ExecuteAsync(query, new
                    {
                        idUser  = userId,
                        idRoles = roleId
                    });
                }

                transaction.Commit();
            }
            catch
            {
                transaction.Rollback();
            }
        }
        public async Task AddRoleClaims(int roleId, int[] claims)
        {
            using var connection = _mySqlConnHelper.MySqlConnection();

            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }

            var transaction = connection.BeginTransaction();

            try
            {
                foreach (var claimId in claims)
                {
                    var query = $@"INSERT INTO `Vanlune`.`ClaimRole`
                                (`idClaim`,
                                `idRole`)
                                VALUES
                                (@claimId,
                                @roleId);";
                    await connection.ExecuteAsync(query, new
                    {
                        claimId,
                        roleId
                    });
                }

                transaction.Commit();
            }
            catch (Exception e)
            {
                _logger.Error($"Error {e.Message} at {e.StackTrace}");

                transaction.Rollback();
            }
        }
        public async Task <User> GetAccount(int id)
        {
            var query = $@"{QueryBase}
                        WHERE A.`id`= @id";

            using var connection = _mySqlConnHelper.MySqlConnection();

            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }

            User currUser = default;
            var  result   = await connection.QueryAsync <User, Role, Claim, User>(query,
                                                                                  (user, role, claim) =>
            {
                if (currUser == null)
                {
                    currUser = user;
                }

                if (currUser.Roles.Any(x => x.Role.Id.Equals(role.Id)))
                {
                    role = currUser.Roles.Where(x => x.Role.Id.Equals(role.Id)).FirstOrDefault().Role;
                }
                if (role != null)
                {
                    if (claim != null)
                    {
                        role.AddClaimToRole(claim);
                    }

                    currUser.AddRoles(new List <Role>()
                    {
                        role
                    });
                }


                return(user);
            },
                                                                                  new
            {
                id
            }, splitOn : $"{nameof(User.Id)},{nameof(Role.Id)},{nameof(Claim.Id)}");

            return(currUser);
        }
Ejemplo n.º 6
0
        public async Task <int> InsertAsync(Role role)
        {
            var query = $@"INSERT INTO `Vanlune`.`Roles`
                        (`name`)
                        VALUES
                        (@{nameof(Role.Name)});
                        SELECT LAST_INSERT_ID();";

            using var connection = _mySqlConnHelper.MySqlConnection();

            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }

            var result = await connection.QueryAsync <int>(query, new
            {
                role.Name
            });

            return(result.Single());
        }