Subversion Repositories SmartDukaan

Rev

Rev 3026 | Rev 3106 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

namespace java in.shop2020.crm
namespace py shop2020.thriftpy.crm

enum TicketPriority {
    LOW = 0,
    HIGH = 1,
    MEDIUM = 2
}

enum TicketStatus {
    OPEN = 0,
    CLOSED = 1,
    REOPEN = 2
}

enum ContactMedium {
    PHONE = 0,
    EMAIL = 1
}

enum TicketCategory {
    RETURN_FORM = 1,
    ORDER_CANCELLATION = 2,
    DELIVERY_PROBLEM = 3,
    PAYMENT_STATUS = 4,
    ORDER_STATUS = 5,
    PRODUCT_REQUEST = 6,
    PRODUCT_QUESTION = 7,
    OTHER = 8
}

struct Ticket {
    1:i64 id,
    2:i64 customerId,
    3:i64 openDate,
    4:i64 closeDate,
    5:string subject,
    6:i64 creatorId,
    7:i64 receipientId,
    8:i64 orderId,
    9:string airwayBillNo,
   10:string productName
}

struct Activity {
    1:i64 id,
    2:string description,
    3:i64 contactTimestamp,
    4:ContactMedium contactMedium,
    5:i64 customerId,
    6:i64 creatorId,
    7:i64 contactingAgentId, // id of agent that contacted the customer!

    // ticket related fields
    8:i64 ticketId,
    9:TicketPriority ticketPriority,
   10:i64 ticketAssigneeId,
   11:TicketStatus ticketStatus,
   12:TicketCategory ticketCategory
}

struct Agent {
    1:i64 id,
    2:string name,
    3:string emailId,
    4:i64 managerId,
    5:string password
}

service CRMService {
    // Methods to read/write tickets from/in database
    list<Ticket> getTickets(1:i64 customerId);
    list<Ticket> getAssignedTickets(1:i64 agentId);
    list<Ticket> getOpenTickets();
    Ticket getTicket(1:i64 ticketId);
    void updateTicket(1:Ticket ticket);
    i64 insertTicket(1:Ticket ticket);

    // Methods to read/write activities from/in database
    list<Activity> getActivities(1:i64 customerId);
    list<Activity> getActivitiesForTicket(1:i64 ticketId);
    Activity getActivity(1:i64 activityId);
    Activity getLastActivity(1:i64 ticketId);
    void insertActivity(1:Activity activity);

    // Methods to read agent information
    list<Agent> getAllAgents();
    Agent getAgent(1:i64 agentId);
    Agent getAgentByEmailId(1:string agentEmailId);
    void updatePasswordForAgent(1:string agentEmailId, 2:string password);

    // Methods to read roles and permissions information
    list<string> getRoleNamesForAgent(1:string agentEmailId);
    list<string> getPermissionsForRoleName(1:string roleName);    
}