Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package in.shop2020.recharge.controllers;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import in.shop2020.model.v1.order.FRC;
import in.shop2020.model.v1.order.RechargeType;
import in.shop2020.model.v1.order.TelecomCircle;
import in.shop2020.thrift.clients.TransactionClient;

public class AddFrcController extends BaseController{

    /**
     * 
     */
    private long circle;
    private long operatorId = 0l;
    List<FRC> frcs = new ArrayList<FRC>();
    private String message = "";
    private static List<TelecomCircle> circles = new ArrayList<TelecomCircle>();
    private static Map<Long, String> operatorsMap = new HashMap<Long, String>();
    private ArrayList<Long> frcIdToDelete = new ArrayList<Long>();
    private long denomination = 0l;
    private long maxDiscount = 0l;
    
    private static final long serialVersionUID = 1L;
    
    static{
        try {
            TransactionClient tcl = new TransactionClient();
            circles = tcl.getClient().getAllCircles();
            operatorsMap = tcl.getClient().getServiceProviders(RechargeType.MOBILE, true);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            log.error("Exception", e);
        }
    }
    
    public String index() {
        if(circles.size() == 0 || operatorsMap.keySet().size() == 0) {
            try{
                TransactionClient tcl = new TransactionClient();
                circles = tcl.getClient().getAllCircles();
                operatorsMap = tcl.getClient().getServiceProviders(RechargeType.MOBILE, true);
            } catch (Exception e) {
                log.error("Unable to get all circles", e);
                setMessage("Internal Error. Please try again.");
            }
        }
        return "index";
    }
    
    public String add() {
        try{
            if(denomination < 1) {
                setMessage("Invalid denomination");
                return create();
            }
            
            if(maxDiscount < 1) {
                setMessage("Cannots add zero discount FRC");
                return create();
            }
            
            if(maxDiscount > denomination) {
                setMessage("Discount cannot be more than denomination");
                return create();
            }
            TransactionClient tcl = new TransactionClient();
            boolean success = tcl.getClient().addFrc(circle, operatorId, denomination, maxDiscount);
            if(!success) {
                setMessage("Could not add FRC. Please try again");
            }
        } catch (Exception e) {
            log.error("Unable to get all circles", e);
        }
        return create();
    }
    
    public String create(){
        try{
            if(circle == 0 || operatorId == 0) {
                setMessage("No FRC available for this circle/Operator combination");
                return index();
            }
            TransactionClient tcl = new TransactionClient();
            frcs = tcl.getClient().getFRCs(circle, operatorId);
            if(frcs.size() == 0) {
                setMessage("No FRC available for this circle");
            }
        } catch (Exception e) {
            log.error("Unable to get FRC for circle and operator : " + circle  + ", " + operatorId + " resp.", e);
            setMessage("Internal error. Please try again");
        }
        return index();
    }

    public long getCircle() {
        return circle;
    }

    public void setCircle(long circle) {
        this.circle = circle;
    }

    public long getOperatorId() {
        return operatorId;
    }

    public void setOperatorId(long operatorId) {
        this.operatorId = operatorId;
    }

    public List<FRC> getFrcs() {
        return frcs;
    }

    public void setFrcs(List<FRC> frcs) {
        this.frcs = frcs;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public List<TelecomCircle> getCircles() {
        return circles;
    }

    public static void setCircles(List<TelecomCircle> circles) {
        AddFrcController.circles = circles;
    }

    public Map<Long, String> getOperatorsMap() {
        return operatorsMap;
    }

    public static void setOperatorsMap(Map<Long, String> operatorsMap) {
        AddFrcController.operatorsMap = operatorsMap;
    }

    public void setFrcIdToDelete(ArrayList<Long> frcIdToDelete) {
        this.frcIdToDelete = frcIdToDelete;
    }

    public ArrayList<Long> getFrcIdToDelete() {
        return frcIdToDelete;
    }

    public long getDenomination() {
        return denomination;
    }

    public void setDenomination(long denomination) {
        this.denomination = denomination;
    }

    public long getMaxDiscount() {
        return maxDiscount;
    }

    public void setMaxDiscount(long maxDiscount) {
        this.maxDiscount = maxDiscount;
    }

}