Subversion Repositories SmartDukaan

Rev

Rev 3339 | Rev 3390 | 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

include "GenericService.thrift"

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 {
    SEND_EMAIL_TO_CUSTOMER = 1,
    RECEIVED_EMAIL_FROM_CUSTOMER = 2,
    CALLED_CUSTOMER = 3,
    RECEIVED_CALL_FROM_CUSTOMER = 4,
    OTHER = 5
}

struct Ticket {
    1:i64 id,
    2:optional i64 customerId, // used for registered users
    3:optional string customerEmailId, // used for un-registered users
    4:i64 openDate,
    5:optional i64 closeDate,
    6:optional string description,
    7:TicketPriority priority,
    8:TicketCategory category,
    9:TicketStatus status,
   10:optional i64 assigneeId,
   11:i64 creatorId,
   12:optional i64 orderId,
   13:optional string airwayBillNo,
   14: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:optional i64 customerId, // used for registered users
    6:optional string customerMobileNumber, // used for unregistered users
    7:i64 creatorId,

    // represents the numeric identifier for the emails sent to customers
    // These are archived in helper..useremailarchive or helper..useremail
    8:optional i64 emailId,

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

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

service CRMService extends GenericService.GenericService{
    // 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, 2:Activity activity);
    i64 insertTicket(1:Ticket ticket, 2:Activity activity);

    // Methods to read/write activities from/in database
    list<Activity> getActivities(1:i64 customerId);
    list<Activity> getActivitiesByCreator(1:i64 creatorId);
    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);

    // Misc methods
    i64 getLastEmailProcessedTimestamp();
    void updateLastEmailProcessedTimestamp(1:i64 timestamp);
}