Subversion Repositories SmartDukaan

Rev

Rev 3137 | Rev 3206 | 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 TicketCategory {
    RETURN_FORM = 1,
    ORDER_CANCELLATION = 2,
    DELIVERY_PROBLEM = 3,
    PAYMENT_STATUS = 4,
    ORDER_STATUS = 5,
    PRODUCT_REQUEST = 6,
    PRODUCT_QUESTION = 7,
    OTHER = 8
}

enum ActivityType {
    EMAIL_CUSTOMER = 1,
    CALL_CUSTOMER = 2,
    OTHER = 3
}

struct Ticket {
    1:i64 id,
    2:i64 customerId,
    3:i64 openDate,
    4:optional i64 closeDate,
    5:string description,
    6:TicketPriority priority,
    7:TicketCategory category,
    8:TicketStatus status,
    9:optional i64 assigneeId
    10:i64 creatorId,
    11:optional i64 orderId,
    12:optional string airwayBillNo,
    13:optional string productName
}

struct Activity {
    1:i64 id,
    2:optional string description,
    3:i64 creationTimestamp, // represents time at which this activity occurred
    4:ActivityType type,
    5:i64 customerId,
    6:i64 creatorId,

    // ticket related fields to track changes on ticket fields
    7:optional i64 ticketId,
    8:optional TicketPriority ticketPriority,
    9:optional i64 ticketAssigneeId,
   10:optional TicketStatus ticketStatus,
   11:optional TicketCategory ticketCategory,
   12:optional string ticketDescription
}

struct Agent {
    1:i64 id,
    2:string name,
    3:string emailId,
    4:optional 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> getUnassignedTickets();
    // Retrieves all tickets assigned to an agent or its reportee.
    list<Ticket> getAllTickets(1:i64 agentId);
    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);
}