syntax = "proto3";

package factordetails;

import "public_messages.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/wrappers.proto";
import "google/protobuf/duration.proto";  
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";

option csharp_namespace = "CMSMicroservice.Protobuf.Protos.FactorDetails";

service FactorDetailsContract
{
    rpc CreateNewFactorDetails(CreateNewFactorDetailsRequest) returns (CreateNewFactorDetailsResponse){
        option (google.api.http) = {
            post: "/CreateNewFactorDetails"
            body: "*"
        };
    };
    rpc UpdateFactorDetails(UpdateFactorDetailsRequest) returns (google.protobuf.Empty){
        option (google.api.http) = {
            put: "/UpdateFactorDetails"
            body: "*"
        };
    };
    rpc DeleteFactorDetails(DeleteFactorDetailsRequest) returns (google.protobuf.Empty){
        option (google.api.http) = {
            delete: "/DeleteFactorDetails"
            body: "*"
        };
    };
    rpc GetFactorDetails(GetFactorDetailsRequest) returns (GetFactorDetailsResponse){
        option (google.api.http) = {
            get: "/GetFactorDetails"
            
        };
    };
    rpc GetAllFactorDetailsByFilter(GetAllFactorDetailsByFilterRequest) returns (GetAllFactorDetailsByFilterResponse){
        option (google.api.http) = {
            get: "/GetAllFactorDetailsByFilter"
            
        };
    };
}
message CreateNewFactorDetailsRequest
{
    int64 product_id = 1;
    int32 count = 2;
    int64 unit_price = 3;
    int32 unit_discount = 4;
    int64 order_id = 5;
    int64 unit_discount_price = 6;
    bool is_change_price = 7;
}
message CreateNewFactorDetailsResponse
{
    int64 id = 1;
}
message UpdateFactorDetailsRequest
{
    int64 id = 1;
    int64 product_id = 2;
    int32 count = 3;
    int64 unit_price = 4;
    int32 unit_discount = 5;
    int64 order_id = 6;
    int64 unit_discount_price = 7;
    bool is_change_price = 8;
}
message DeleteFactorDetailsRequest
{
    int64 id = 1;
}
message GetFactorDetailsRequest
{
    int64 id = 1;
}
message GetFactorDetailsResponse
{
    int64 id = 1;
    int64 product_id = 2;
    int32 count = 3;
    int64 unit_price = 4;
    int32 unit_discount = 5;
    int64 order_id = 6;
    int64 unit_discount_price = 7;
    bool is_change_price = 8;
}
message GetAllFactorDetailsByFilterRequest
{
    messages.PaginationState pagination_state = 1;
    google.protobuf.StringValue sort_by = 2;
    GetAllFactorDetailsByFilterFilter filter = 3;
}
message GetAllFactorDetailsByFilterFilter
{
    google.protobuf.Int64Value id = 1;
    google.protobuf.Int64Value product_id = 2;
    google.protobuf.Int32Value count = 3;
    google.protobuf.Int64Value unit_price = 4;
    google.protobuf.Int32Value unit_discount = 5;
    google.protobuf.Int64Value order_id = 6;
    google.protobuf.Int64Value unit_discount_price = 7;
    google.protobuf.BoolValue is_change_price = 8;
}
message GetAllFactorDetailsByFilterResponse
{
    messages.MetaData meta_data = 1;
    repeated GetAllFactorDetailsByFilterResponseModel models = 2;
}
message GetAllFactorDetailsByFilterResponseModel
{
    int64 id = 1;
    int64 product_id = 2;
    int32 count = 3;
    int64 unit_price = 4;
    int32 unit_discount = 5;
    int64 order_id = 6;
    int64 unit_discount_price = 7;
    bool is_change_price = 8;
}
