Hi @thedatacrew Unfortunately, there is no best way that I recommend to you.
There is a lot of factors that affect while deciding mono-repo or multi-repo. For example, the most important one is your team. How do you develop software? Which services will have a dedicated team? There is a lot of questions, and source-control usage defines how you do that job in your way.
But I can highly recommend comparing the pros & cons between mono-repository and mono-repository.
Disclaimer: I've just summarized some of the topics from https://kinsta.com/blog/monorepo-vs-multi-repo/#benefits-of-monorepo You can read more about it.
In a summary, I can't say exactly the right thing because there is no single correct answer. Mostly your development cycle and culture define it.
Hi wend0rlin
Can you please set dropdownParent parameter as your modal.
It'll solve the problem. Read more about: https://select2.org/dropdown#dropdown-placement
$('#mySelect2').select2({
dropdownParent: $('#myModal')
});
Also we've solved that issue in the same way: https://github.com/abpframework/abp/pull/10734/files
Our ABP CLI and ABP Suite both are of version 4.4.3 , we are trying to create a new solution in the same version that is 4.4.3 however the version that we get is 5.0.0.
You can create a new project with-v
parameter like below:
abp new Acme.BookStore -v 4.4.3
Now, the problem we are facing in 5.0.0 is that after migration when we update database an error regarding jsonb datatype occurs as we are using postgreSQL 9.1
We're using the latest version of EntityFramework and Npgsql, so if there is an error, it might be related to the implementation of Npgsql
Hi nhontran
You're on an outdated version currently. Can you please try on newer versions?
You can follow Migrations Guides: https://docs.abp.io/en/abp/latest/Migration-Guides/Index
asp-for property type is ModelExpression and it's not related to ABP.
You can create PropertyExpression on your own for your model https://docs.microsoft.com/en-us/dotnet/api/system.linq.expressions.expression.property?view=net-6.0
And you can create a new ModelExpression with that expression. You can pass that dynamic ModelExpression to asp-for property.
Or you can use the already implemented Dynamic Forms feature of ABP Framework
You need to add project references first.
Same project layers should be referenced by same project layer. For example:
YourApp.Domain -> YourModule.Domain
YourApp.Domain.Shared -> YourModule.Domain.Shared
YourApp.Application -> YourModule.Application
YourApp.Application.Contracts -> YourModule.Application.Contracts
YourApp.HttpApi -> YourModule.HttpApi
YourApp.HttpApi.Client -> YourModule.HttpApi.Client
YourApp.Web -> YourModule.Web
...
To do that operation, go to your .csproj file, for example YourApp.Domain.csproj and add following reference:
<ItemGroup>
...
<!-- Place correct path to your module -->
<ProjectReference Include="..\..\modules\YourModule.Domain\YourModule.Domain.csproj" />
<ItemGroup>
Then you should add the DependsOn attribute over your YourAppDomainModule
class:
[DependsOn(typeof(YourModuleDomainModule))] // <-- Add this line.
public class YourAppDomainModule : AbpModule
{
// ...
}
And make this step for each layer.
I can't provide a way that works perfectly in any situation. Each module has different parts and extensions (maybe), the current version of CLI cant guarantee your module will be installed properly if you replace the cache, but it's a way to try.
For the current version (v5.0), the best way to install module is manual installation. Adding dependencies to .csproj files and [DependsOn(typeof(...))]
attribute over module class manually is the most consistent way.
You're right, Volo.Payment.Web is a MVC implementation of payment but that's what we have right now. Payment module has only Web implementation and you need to add that dependency to use PaymentGateway page. You can still configure the return URL and your users won't see those pages.
Even in an angular application, payment operations are running on server pages (MVC).
Payment gateways can't be provided by an API, it's implemented something like that:
Gateways = _paymentWebOptions.Value.Gateways
.Where(x => gatewaysDtos.Any(a => a.Name == x.Key))
.Select(x => x.Value)
.ToList();
If you still want to implement for blazor, you'll need to implement for each payment provider, currently, we have the following implementations:
Firstly, it seems you're using a tiered application right? Is your solution tiered?
As I can see, you're using MVC UI with dynamic proxies at both js & csharp;
So make sure your HttpApi.Host and Web projects include Volo.Payment.HttpApi
dependency.
Hi @marketbus,
But I am getting a stripe exception stating that the sessionId is missing.
Can you please share what exception you got?
After a payment request was created, you need to redirect to/Payment/GatewaySelection?paymentRequestId=THE_ID_OF_PAYMENTREQUEST
endpoint. If that endpoint doesn't exist in your application make sure your project has Volo.Payment.HttpApi and Volo.Payment.Web dependencies.
Also, when testing from within stripe, the default yourdomain.com/payment/stripe/webhook endpoint do not work. Events sent to this endpoint return an exception.
Volo.Payment.HttpApi includes webhook endpoints. If you add that dependency properly, the endpoint will exist in your application. Also sending a test webhook will always return an error because the application can't find any entry with a randomly generated id sent by test request.
Volo.Payment.Web includes web components and pages such as 'GatewaySelection', 'PrePayment', 'PostPayment' etc. If you add that dependency and configure it properly, your flow should work without an error.
If the project already has those dependencies and the exception is different than 404 not found error, please share your logs and which dependencies your project has.