feat: Implement Public Message Management Commands and Queries

- Add GetUserPackageStatusQueryValidator for user package status validation.
- Create ArchiveMessageCommand and ArchiveMessageCommandHandler for archiving public messages.
- Implement ArchiveMessageCommandValidator to validate message ID.
- Introduce PublishMessageCommand and PublishMessageCommandHandler for publishing messages.
- Add PublishMessageCommandValidator for validating publish message requests.
- Implement GetPublicMessageQuery and GetPublicMessageQueryHandler for retrieving public messages.
- Create GetPublicMessageQueryValidator for validating public message requests.
- Add ApplyDiscountToOrderCommand and ApplyDiscountToOrderCommandHandler for applying discounts to orders.
- Implement ApplyDiscountToOrderCommandValidator for validating discount application requests.
- Create UpdateOrderStatusCommand and UpdateOrderStatusCommandHandler for changing order statuses.
- Implement UpdateOrderStatusCommandValidator for validating order status updates.
- Add CalculateOrderPVQuery and CalculateOrderPVQueryHandler for calculating order PV.
- Implement CalculateOrderPVQueryValidator for validating PV calculation requests.
- Create GetOrdersByDateRangeQuery and GetOrdersByDateRangeQueryHandler for retrieving orders by date range.
- Implement GetOrdersByDateRangeQueryValidator for validating date range queries.
- Add PublicMessage entity to represent public messages in the system.
- Implement PublicMessageService for handling public message operations via gRPC.
This commit is contained in:
masoodafar-web
2025-12-04 03:43:19 +03:30
parent 84f642e900
commit ba6d74fe35
45 changed files with 1777 additions and 22 deletions
@@ -2,8 +2,60 @@ syntax = "proto3";
package messages;
import "google/protobuf/empty.proto";
import "google/protobuf/wrappers.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option csharp_namespace = "CMSMicroservice.Protobuf.Protos";
service PublicMessageContract{}
service PublicMessageContract{
rpc CreatePublicMessage(CreatePublicMessageRequest) returns (CreatePublicMessageResponse){
option (google.api.http) = {
post: "/CreatePublicMessage"
body: "*"
};
};
rpc UpdatePublicMessage(UpdatePublicMessageRequest) returns (google.protobuf.Empty){
option (google.api.http) = {
put: "/UpdatePublicMessage"
body: "*"
};
};
rpc DeletePublicMessage(DeletePublicMessageRequest) returns (google.protobuf.Empty){
option (google.api.http) = {
delete: "/DeletePublicMessage"
body: "*"
};
};
rpc PublishMessage(PublishMessageRequest) returns (PublishMessageResponse){
option (google.api.http) = {
post: "/PublishMessage"
body: "*"
};
};
rpc ArchiveMessage(ArchiveMessageRequest) returns (ArchiveMessageResponse){
option (google.api.http) = {
post: "/ArchiveMessage"
body: "*"
};
};
rpc GetAllMessages(GetAllMessagesRequest) returns (GetAllMessagesResponse){
option (google.api.http) = {
get: "/GetAllMessages"
};
};
rpc GetActiveMessages(GetActiveMessagesRequest) returns (GetActiveMessagesResponse){
option (google.api.http) = {
get: "/GetActiveMessages"
};
};
rpc GetPublicMessage(GetPublicMessageRequest) returns (GetPublicMessageResponse){
option (google.api.http) = {
get: "/GetPublicMessage"
};
};
}
message PaginationState
{
int32 page_number = 1;
@@ -68,3 +120,151 @@ enum PaymentMethod
IPG = 0;
Wallet = 1;
}
// Public Message Types
message CreatePublicMessageRequest
{
string title = 1;
string content = 2;
int32 type = 3;
int32 priority = 4;
google.protobuf.Timestamp start_date = 5;
google.protobuf.Timestamp end_date = 6;
google.protobuf.StringValue link_url = 7;
google.protobuf.StringValue link_text = 8;
}
message CreatePublicMessageResponse
{
int64 id = 1;
}
message UpdatePublicMessageRequest
{
int64 id = 1;
string title = 2;
string content = 3;
int32 type = 4;
int32 priority = 5;
google.protobuf.Timestamp start_date = 6;
google.protobuf.Timestamp end_date = 7;
google.protobuf.StringValue link_url = 8;
google.protobuf.StringValue link_text = 9;
}
message DeletePublicMessageRequest
{
int64 message_id = 1;
}
message PublishMessageRequest
{
int64 message_id = 1;
}
message PublishMessageResponse
{
bool success = 1;
string message = 2;
google.protobuf.Timestamp published_at = 3;
}
message ArchiveMessageRequest
{
int64 message_id = 1;
}
message ArchiveMessageResponse
{
bool success = 1;
string message = 2;
google.protobuf.Timestamp archived_at = 3;
}
message GetAllMessagesRequest
{
int32 page_number = 1;
int32 page_size = 2;
google.protobuf.BoolValue is_active = 3;
google.protobuf.Int32Value type = 4;
google.protobuf.Int32Value priority = 5;
}
message GetAllMessagesResponse
{
MetaData meta_data = 1;
repeated AdminPublicMessageDto messages = 2;
}
message AdminPublicMessageDto
{
int64 id = 1;
string title = 2;
string content = 3;
int32 type = 4;
string type_name = 5;
int32 priority = 6;
string priority_name = 7;
bool is_active = 8;
google.protobuf.Timestamp starts_at = 9;
google.protobuf.Timestamp expires_at = 10;
int64 created_by_user_id = 11;
int32 view_count = 12;
google.protobuf.StringValue link_url = 13;
google.protobuf.StringValue link_text = 14;
google.protobuf.Timestamp created = 15;
google.protobuf.Timestamp last_modified = 16;
bool is_expired = 17;
}
message GetActiveMessagesRequest
{
}
message GetActiveMessagesResponse
{
repeated PublicMessageDto messages = 1;
}
message PublicMessageDto
{
int64 id = 1;
string title = 2;
string content = 3;
int32 type = 4;
string type_name = 5;
int32 priority = 6;
string priority_name = 7;
google.protobuf.Timestamp starts_at = 8;
google.protobuf.Timestamp expires_at = 9;
google.protobuf.StringValue link_url = 10;
google.protobuf.StringValue link_text = 11;
google.protobuf.Timestamp created = 12;
}
message GetPublicMessageRequest
{
int64 message_id = 1;
}
message GetPublicMessageResponse
{
int64 id = 1;
string title = 2;
string content = 3;
int32 type = 4;
int32 priority = 5;
bool is_active = 6;
bool is_archived = 7;
google.protobuf.Timestamp start_date = 8;
google.protobuf.Timestamp end_date = 9;
google.protobuf.Timestamp published_at = 10;
google.protobuf.Timestamp archived_at = 11;
int64 created_by_user_id = 12;
int32 view_count = 13;
google.protobuf.StringValue link_url = 14;
google.protobuf.StringValue link_text = 15;
google.protobuf.Timestamp created_at = 16;
google.protobuf.Timestamp last_modified_at = 17;
}