syntax = "proto3";

package usercontract;

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.UserContract";

service UserContractContract
{
    rpc CreateNewUserContract(CreateNewUserContractRequest) returns (CreateNewUserContractResponse){
        option (google.api.http) = {
            post: "/CreateNewUserContract"
            body: "*"
        };
    };
    rpc UpdateUserContract(UpdateUserContractRequest) returns (google.protobuf.Empty){
        option (google.api.http) = {
            put: "/UpdateUserContract"
            body: "*"
        };
    };
    rpc DeleteUserContract(DeleteUserContractRequest) returns (google.protobuf.Empty){
        option (google.api.http) = {
            delete: "/DeleteUserContract"
            body: "*"
        };
    };
    rpc GetUserContract(GetUserContractRequest) returns (GetUserContractResponse){
        option (google.api.http) = {
            get: "/GetUserContract"
            
        };
    };
    rpc GetAllUserContractByFilter(GetAllUserContractByFilterRequest) returns (GetAllUserContractByFilterResponse){
        option (google.api.http) = {
            get: "/GetAllUserContractByFilter"
            
        };
    };
}
message CreateNewUserContractRequest
{
    int64 user_id = 1;
    int64 contract_id = 2;
    string sign_guid = 3;
    string signed_pdf_file = 4;
}
message CreateNewUserContractResponse
{
    int64 id = 1;
}
message UpdateUserContractRequest
{
    int64 id = 1;
    int64 user_id = 2;
    int64 contract_id = 3;
    string sign_guid = 4;
    string signed_pdf_file = 5;
}
message DeleteUserContractRequest
{
    int64 id = 1;
}
message GetUserContractRequest
{
    int64 id = 1;
}
message GetUserContractResponse
{
    int64 id = 1;
    int64 user_id = 2;
    int64 contract_id = 3;
    string sign_guid = 4;
    string signed_pdf_file = 5;
}
message GetAllUserContractByFilterRequest
{
    messages.PaginationState pagination_state = 1;
    google.protobuf.StringValue sort_by = 2;
    GetAllUserContractByFilterFilter filter = 3;
}
message GetAllUserContractByFilterFilter
{
    google.protobuf.Int64Value id = 1;
    google.protobuf.Int64Value user_id = 2;
    google.protobuf.Int64Value contract_id = 3;
    google.protobuf.StringValue sign_guid = 4;
    google.protobuf.StringValue signed_pdf_file = 5;
}
message GetAllUserContractByFilterResponse
{
    messages.MetaData meta_data = 1;
    repeated GetAllUserContractByFilterResponseModel models = 2;
}
message GetAllUserContractByFilterResponseModel
{
    int64 id = 1;
    int64 user_id = 2;
    int64 contract_id = 3;
    string sign_guid = 4;
    string signed_pdf_file = 5;
}
