Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package in.shop2020.serving.controllers;

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

import in.shop2020.model.v1.order.EmiScheme;
import in.shop2020.model.v1.order.TransactionService.Client;
import in.shop2020.thrift.clients.TransactionClient;

import org.apache.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class EmiInfoController extends BaseController{

        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private static Logger log = Logger.getLogger(Class.class);
        private TransactionClient transactionClient = null;
        private Client client;
        private static List<EmiScheme> emiSchemes = null;
        private static JSONObject emiTableObj = null;

        public String index() throws JSONException {
                HashMap<String, List<EmiScheme>> emiMap = null;
                if (emiSchemes==null){
                        log.info("Fetching emi schemes from db");
                        try {
                                transactionClient = new TransactionClient();
                                client = transactionClient.getClient();
                                emiSchemes = client.getAvailableEmiSchemes();
                                emiMap = new HashMap<String,List<EmiScheme>>();
                                for (EmiScheme scheme : emiSchemes){
                                        if (emiMap.containsKey(scheme.getBankName())) {
                                                List<EmiScheme> listScheme = emiMap.get(scheme.getBankName());
                                                listScheme.add(scheme);
                                                emiMap.put(scheme.getBankName(), listScheme);
                                        }
                                        else{
                                                List<EmiScheme> listScheme = new ArrayList<EmiScheme>();
                                                listScheme.add(scheme);
                                                emiMap.put(scheme.getBankName(), listScheme);
                                        }
                                }
                        } catch (Exception e) {
                                log.error("Unable to initialize the tranaction service client or unable to get emi schemes", e);
                        }
                        emiTableObj = new JSONObject();
                        JSONArray arr = new JSONArray();
                        for (String set : emiMap.keySet()){
                                JSONObject obj = new JSONObject();
                                obj.put("Bank", set);
                                for (EmiScheme scheme :emiMap.get(set)){
                                        obj.put("T"+scheme.getTenureDescription().replace(" ", ""), scheme.getInterestRate());
                                }
                                arr.put(obj);
                        }
                        emiTableObj.put("BankCharges", arr);

                        JSONArray arr1 = new JSONArray();
                        for (String set : emiMap.keySet()){
                                JSONObject obj = new JSONObject();
                                obj.put("Bank", set);
                                for (EmiScheme scheme :emiMap.get(set)){
                                        obj.put("T"+scheme.getTenureDescription().replace(" ", ""), getEmiAmount(scheme));
                                }
                                arr1.put(obj);
                        }
                        emiTableObj.put("Value", arr1);
                }
                return "index";
        }


        public double getEmiAmount(EmiScheme scheme){
                double interestRate = scheme.getInterestRate()/12/100;
                double emiAmount = 10000*interestRate*Math.pow((1+interestRate), scheme.getTenure())/(Math.pow((1+interestRate), scheme.getTenure())-1);
                return Math.ceil(emiAmount);
        }

        public String getEmiDetailsInJson() {
                return EmiInfoController.emiTableObj.toString();
        }

        public static void main(String[] args) throws JSONException{
                EmiInfoController obj = new EmiInfoController();
                obj.index();
        }
}