Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/* Migration File: m20220911_121311_AAA_create_gtw_type_i18n.sql */
/* CAUTION: don't forget to use {{dbprefix}} for schemas */

USE `{{dbprefix}}{{Schema}}`;

ALTER TABLE `tblPaymentGatewayTypes`
ADD COLUMN `pgtID` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
DROP PRIMARY KEY,
ADD UNIQUE INDEX `pgtType` (`pgtType`),
ADD PRIMARY KEY (`pgtID`);

CREATE TABLE `tblPaymentGatewayTypesI18N` (
`pid` SMALLINT(5) UNSIGNED NOT NULL,
`language` VARCHAR(6) NOT NULL COLLATE 'utf8mb4_general_ci',
`pgtNameI18N` VARCHAR(50) NOT NULL COLLATE 'utf8mb4_general_ci',
PRIMARY KEY (`pid`, `language`) USING BTREE,
INDEX `pid` (`pid`) USING BTREE,
INDEX `language` (`language`) USING BTREE,
CONSTRAINT `FK_tblPaymentGatewayTypesI18N_tblPaymentGatewayTypes` FOREIGN KEY (`pid`) REFERENCES `tblPaymentGatewayTypes` (`pgtID`) ON UPDATE NO ACTION ON DELETE CASCADE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

INSERT IGNORE INTO tblPaymentGatewayTypesI18N(pid, language, pgtNameI18N)
SELECT pgtID, 'fa', 'تست دولوپر'
FROM tblPaymentGatewayTypes
WHERE pgtType = '-';

INSERT IGNORE INTO tblPaymentGatewayTypesI18N(pid, language, pgtNameI18N)
SELECT pgtID, 'fa', 'رمز ارز'
FROM tblPaymentGatewayTypes
WHERE pgtType = 'B';

INSERT IGNORE INTO tblPaymentGatewayTypesI18N(pid, language, pgtNameI18N)
SELECT pgtID, 'fa', 'کردیت کارت بین المللی'
FROM tblPaymentGatewayTypes
WHERE pgtType = 'C';

INSERT IGNORE INTO tblPaymentGatewayTypesI18N(pid, language, pgtNameI18N)
SELECT pgtID, 'fa', 'دبیت کارت بین المللی'
FROM tblPaymentGatewayTypes
WHERE pgtType = 'D';

INSERT IGNORE INTO tblPaymentGatewayTypesI18N(pid, language, pgtNameI18N)
SELECT pgtID, 'fa', 'بانک ایران'
FROM tblPaymentGatewayTypes
WHERE pgtType = 'I';

INSERT IGNORE INTO tblPaymentGatewayTypesI18N(pid, language, pgtNameI18N)
SELECT pgtID, 'fa', 'درگاه واسطه ایران'
FROM tblPaymentGatewayTypes
WHERE pgtType = 'M';

INSERT IGNORE INTO tblPaymentGatewayTypesI18N(pid, language, pgtNameI18N)
SELECT pgtID, 'fa', 'پرداخت در محل'
FROM tblPaymentGatewayTypes
WHERE pgtType = 'O';
62 changes: 61 additions & 1 deletion Modules/Account/moduleSrc/ORM/PaymentGateways.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,20 @@ namespace Targoman::API::AccountModule {

namespace ORM {

/*****************************************************************\
|* PaymentGatewayTypesI18N ***************************************|
\*****************************************************************/
TARGOMAN_API_SUBMODULE_IMPLEMENT(Account, PaymentGatewayTypesI18N)

PaymentGatewayTypesI18N::PaymentGatewayTypesI18N() :
intfSQLBasedModule(
AAASchema,
tblPaymentGatewayTypesI18N::Name,
tblPaymentGatewayTypesI18N::Private::ORMFields,
tblPaymentGatewayTypesI18N::Private::Relations,
tblPaymentGatewayTypesI18N::Private::Indexes
) { ; }

/*****************************************************************\
|* PaymentGatewayTypes *******************************************|
\*****************************************************************/
Expand All @@ -52,7 +66,53 @@ PaymentGatewayTypes::PaymentGatewayTypes() :
tblPaymentGatewayTypes::Private::ORMFields,
tblPaymentGatewayTypes::Private::Relations,
tblPaymentGatewayTypes::Private::Indexes
) { ; }
) {
PaymentGatewayTypesI18N::instance();
}

ORMSelectQuery PaymentGatewayTypes::makeSelectQuery(INTFAPICALLBOOM_IMPL &APICALLBOOM_PARAM, const QString &_alias, Q_DECL_UNUSED bool _translate, Q_DECL_UNUSED bool _isRoot) {
PaymentGatewayTypesI18N::instance().prepareFiltersList();

ORMSelectQuery Query = intfSQLBasedModule::makeSelectQuery(APICALLBOOM_PARAM, _alias, _translate);

if (_translate) {
Query
.removeCol(tblPaymentGatewayTypes::Fields::pgtName)
.nestedLeftJoin(PaymentGatewayTypesI18N::instance().makeSelectQuery(APICALLBOOM_PARAM)
.where({ tblPaymentGatewayTypesI18N::Fields::language, enuConditionOperator::Equal, APICALLBOOM_PARAM.language() })
, "lng_tblPaymentGatewayTypes"
, { "lng_tblPaymentGatewayTypes", tblPaymentGatewayTypesI18N::Fields::pid,
enuConditionOperator::Equal,
tblPaymentGatewayTypes::Name, tblPaymentGatewayTypes::Fields::pgtID
}
)
.addCol(enuConditionalAggregation::IF,
{ "lng_tblPaymentGatewayTypes", tblPaymentGatewayTypesI18N::Fields::pgtNameI18N, enuConditionOperator::Null },
DBExpression::VALUE(R(_alias.isEmpty() ? tblPaymentGatewayTypes::Name : _alias, tblPaymentGatewayTypes::Fields::pgtName)),
DBExpression::VALUE(R("lng_tblPaymentGatewayTypes", tblPaymentGatewayTypesI18N::Fields::pgtNameI18N)),
tblPaymentGatewayTypes::Fields::pgtName
)
;
} else {
Query
.nestedLeftJoin(PaymentGatewayTypesI18N::instance().makeSelectQuery(APICALLBOOM_PARAM)
.addCol(tblPaymentGatewayTypesI18N::Fields::pid)
.addCol(DBExpression::VALUE(QString("CONCAT('[', GROUP_CONCAT(JSON_OBJECT(`language`, %1)), ']')")
.arg(tblPaymentGatewayTypesI18N::Fields::pgtNameI18N)),
tblPaymentGatewayTypesI18N::Fields::pgtNameI18N)
.groupBy(tblPaymentGatewayTypesI18N::Fields::pid)
, "lng_tblPaymentGatewayTypes"
, { "lng_tblPaymentGatewayTypes", tblPaymentGatewayTypesI18N::Fields::pid,
enuConditionOperator::Equal,
tblPaymentGatewayTypes::Name, tblPaymentGatewayTypes::Fields::pgtID
}
)
.addCol(R("lng_tblPaymentGatewayTypes", tblPaymentGatewayTypesI18N::Fields::pgtNameI18N), tblPaymentGatewayTypes::Fields::pgtNameI18N)
;
}

return Query;
}

QVariant IMPL_ORMGET_USER(PaymentGatewayTypes) {
Authorization::checkPriv(APICALLBOOM_PARAM, this->privOn(EHTTP_GET, this->moduleBaseName()));
Expand Down
83 changes: 71 additions & 12 deletions Modules/Account/moduleSrc/ORM/PaymentGateways.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,30 @@ namespace ORM {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"

namespace tblPaymentGatewayTypes {
constexpr char Name[] = "tblPaymentGatewayTypes";

namespace Fields {
TARGOMAN_CREATE_CONSTEXPR(pgtID);
TARGOMAN_CREATE_CONSTEXPR(pgtType);
TARGOMAN_CREATE_CONSTEXPR(pgtName);
TARGOMAN_CREATE_CONSTEXPR(pgtNameI18N);
TARGOMAN_CREATE_CONSTEXPR(pgtMinRequestAmount);
TARGOMAN_CREATE_CONSTEXPR(pgtMaxRequestAmount);
TARGOMAN_CREATE_CONSTEXPR(pgtStatus);
}
}

namespace tblPaymentGatewayTypesI18N {
constexpr char Name[] = "tblPaymentGatewayTypesI18N";

namespace Fields {
TARGOMAN_CREATE_CONSTEXPR(pid);
TARGOMAN_CREATE_CONSTEXPR(language);
TARGOMAN_CREATE_CONSTEXPR(pgtNameI18N);
}
}

namespace tblPaymentGateways {
constexpr char Name[] = "tblPaymentGateways";

Expand Down Expand Up @@ -119,16 +143,8 @@ namespace tblPaymentGateways {
}
}

//-- tbl inside
namespace tblPaymentGatewayTypes {
constexpr char Name[] = "tblPaymentGatewayTypes";

namespace Fields {
TARGOMAN_CREATE_CONSTEXPR(pgtType);
TARGOMAN_CREATE_CONSTEXPR(pgtName);
TARGOMAN_CREATE_CONSTEXPR(pgtMinRequestAmount);
TARGOMAN_CREATE_CONSTEXPR(pgtMaxRequestAmount);
TARGOMAN_CREATE_CONSTEXPR(pgtStatus);
}

namespace Relation {
// constexpr char AAA[] = "aaa";
Expand All @@ -137,16 +153,18 @@ namespace tblPaymentGatewayTypes {
namespace Private {
const QList<clsORMField> ORMFields = {
//ColName Type Validation Default UpBy Sort Filter Self Virt PK
{ Fields::pgtID, ORM_PRIMARYKEY_16 },
{ Fields::pgtType, S(Targoman::API::AccountModule::enuPaymentGatewayType::Type), QFV, QRequired, UPAdmin },
{ Fields::pgtName, S(QString), QFV.unicodeAlNum().maxLenght(64), QRequired, UPAdmin },
ORM_MULTILANGUAGE(Fields::pgtName, QRequired, UPAdmin),
{ Fields::pgtMinRequestAmount, S(qreal), QFV.minValue(1), 1, UPAdmin },
{ Fields::pgtMaxRequestAmount, S(NULLABLE_TYPE(double)), QFV, QNull, UPAdmin },
{ Fields::pgtStatus, ORM_STATUS_FIELD(Targoman::API::AccountModule::enuPaymentGatewayTypeStatus, Targoman::API::AccountModule::enuPaymentGatewayTypeStatus::Active) },
};

const QList<stuRelation> Relations = {
//Col Reference Table ForeignCol Rename LeftJoin
{ Fields::pgtType, R(AAASchema, tblPaymentGateways::Name), tblPaymentGateways::Fields::pgwType },
//Col Reference Table ForeignCol Rename LeftJoin
{ Fields::pgtType, R(AAASchema, tblPaymentGateways::Name), tblPaymentGateways::Fields::pgwType },
{ Fields::pgtID, R(AAASchema, tblPaymentGatewayTypesI18N::Name), tblPaymentGatewayTypesI18N::Fields::pid },
};

const QList<stuDBIndex> Indexes = {
Expand All @@ -155,6 +173,7 @@ namespace tblPaymentGatewayTypes {
} //namespace Private

TAPI_DEFINE_STRUCT(DTO,
SF_ORM_PRIMARYKEY_16 (pgtID),
SF_Enum (pgtType, Targoman::API::AccountModule::enuPaymentGatewayType, Targoman::API::AccountModule::enuPaymentGatewayType::COD),
SF_QString (pgtName),
SF_qreal (pgtMinRequestAmount),
Expand All @@ -163,6 +182,33 @@ namespace tblPaymentGatewayTypes {
);
}

namespace tblPaymentGatewayTypesI18N {
namespace Relation {
}

namespace Private {
const QList<clsORMField> ORMFields = {
//ColName Type Validation Default UpBy Sort Filter Self Virt PK
{ Fields::pid, S(quint16), QFV, QRequired, UPNone, true, true, false, false, true },
{ Fields::language, S(QString), QFV, QRequired, UPNone, true, true, false, false, true },
{ Fields::pgtNameI18N, S(QString), QFV, QRequired, UPOwner },
};

const QList<stuRelation> Relations = {
};

const QList<stuDBIndex> Indexes = {
};

} //namespace Private

TAPI_DEFINE_STRUCT(DTO,
SF_quint16 (pid),
SF_QString (language),
SF_QString (pgtNameI18N)
);
}

namespace tblPaymentGateways {
namespace Relation {
constexpr char Type[] = "type";
Expand Down Expand Up @@ -243,18 +289,30 @@ namespace tblPaymentGateways {

#pragma GCC diagnostic pop

/******************************************************/
class PaymentGatewayTypesI18N : public intfSQLBasedModule
{
Q_OBJECT
TARGOMAN_API_SUBMODULE_DEFINE(Account, PaymentGatewayTypesI18N)
};

/******************************************************/
class PaymentGatewayTypes : public intfSQLBasedModule
{
Q_OBJECT
TARGOMAN_API_SUBMODULE_DEFINE(Account, PaymentGatewayTypes)

public:
virtual ORMSelectQuery makeSelectQuery(INTFAPICALLBOOM_DECL &APICALLBOOM_PARAM, const QString &_alias = {}, bool _translate = true, bool _isRoot = true);

private slots:
QVariant ORMGET_USER("Get payment gateway type information")
quint32 ORMCREATE_USER("Create a new payment gateway type by an authorized user")
bool ORMUPDATE_USER("Update payment gateway type info by an authorized user")
bool ORMDELETE_USER("Delete a payment gateway type")
};

/******************************************************/
class PaymentGateways : public intfSQLBasedModule
{
Q_OBJECT
Expand All @@ -277,6 +335,7 @@ private slots:
)
};

/******************************************************/
} //namespace ORM
} //namespace Targoman::API::AccountModule

Expand Down
2 changes: 1 addition & 1 deletion Modules/Account/moduleSrc/Payment/PaymentLogic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ QVariantList PaymentLogic::findAvailableGatewayTypes(

ORMSelectQuery qry = PaymentGatewayTypes::instance().makeSelectQuery(APICALLBOOM_PARAM)
.addCol(tblPaymentGatewayTypes::Fields::pgtType)
.addCol(tblPaymentGatewayTypes::Fields::pgtName)
// .addCol(tblPaymentGatewayTypes::Fields::pgtName)
.addCol(DBExpression::VALUE("IFNULL(pgtMinRequestAmount, 0)"), tblPaymentGatewayTypes::Fields::pgtMinRequestAmount)
.addCol(DBExpression::VALUE("IFNULL(pgtMaxRequestAmount, 0)"), tblPaymentGatewayTypes::Fields::pgtMaxRequestAmount)
.nestedInnerJoin(PaymentGatewayTypes::instance().makeSelectQuery(APICALLBOOM_PARAM)
Expand Down
4 changes: 4 additions & 0 deletions Modules/Advert/functionalTest/testAdvert.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -895,6 +895,10 @@ private slots:
{
{ "amount", this->LastPreVoucher.ToPay },
{ "domain", "dev.test" },
},
{},
{
{ "accept-language: fa" },
}
);

Expand Down