Subversion Repositories SmartDukaan

Rev

Rev 13434 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.inventory.service;

import in.shop2020.thrift.clients.WarehouseClient;
import in.shop2020.utils.GmailUtils;
import in.shop2020.warehouse.InventoryAvailability;
import in.shop2020.warehouse.WarehouseService.Client;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.thrift.TException;
import org.slf4j.LoggerFactory;

public class StockSheetSender{
        public static org.slf4j.Logger logger = LoggerFactory.getLogger(StockSheetSender.class);
        public static void main(String[] args) {
                List<InventoryAvailability> serializedInventoryAvailability = new ArrayList<InventoryAvailability>();
                List<InventoryAvailability> nonSerializedInventoryAvailability = new ArrayList<InventoryAvailability>();
                List<InventoryAvailability> inventoryAvailability = new ArrayList<InventoryAvailability>();
                
                String emailFromAddress = "build-staging@shop2020.in";
                String password = "shop2020";
                GmailUtils mailer = new GmailUtils();
                //String sendTo[] = new String[]{"manish.sharma@shop2020.in"};
                String sendTo[] = new String[]{ "rajneesh.arora@saholic.com","amit.sirohi@shop2020.in","chaitnaya.vats@saholic.com","venky864@gmail.com",
                                "ritesh.chauhan@shop2020.in","khushal.bhatia@saholic.com","himanshu.pandey@shop2020.in", "shailesh.kumar@shop2020.in"};
                File file = null;
                
                try {
                        Client warehouseClient = new WarehouseClient().getClient();
                        serializedInventoryAvailability = warehouseClient.getCurrentSerializedInventoryByScans(3298L);
                        nonSerializedInventoryAvailability  = warehouseClient.getCurrentNonSerializedInventoryByScans(3298L);
                } catch(TException ex) {
                        logger.error(ex.getMessage(), ex);
                }
                inventoryAvailability.addAll(serializedInventoryAvailability);
                inventoryAvailability.addAll(nonSerializedInventoryAvailability);
                int quantity= 0;
                for(InventoryAvailability inva : inventoryAvailability){
                        quantity += inva.getQuantity();
                }
                try {
                        file = createInventoryAvailabilityFile(inventoryAvailability);
                        String htmlFileName = getHtmlFileGenrator(file, "Stock Sheet - Hyderabad, Total Quantity-" + quantity );
                        List<File> files  = new ArrayList<File>();
                        files.add(file);
                        if(htmlFileName!=null && !htmlFileName.isEmpty()){
                                mailer.sendSSLMessage(sendTo, "Stock Sheet - Hyderabad", " ", emailFromAddress, password, files, htmlFileName);
                        }else {
                                mailer.sendSSLMessage(sendTo, "Stock Sheet - Hyderabad", " ", emailFromAddress, password, files);
                        }
                }
                catch(Exception e) {
                        logger.error(e.getMessage(), e);
                }
        }


        private static File createInventoryAvailabilityFile(List<InventoryAvailability> inventoryAvailability) throws IOException {
                File file = new File("/tmp/SaholicInventory-Hyderabad.xls");
                BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
                bufferedWriter.write(StringUtils.join(new String[] {
                                "Item Id",
                                "Brand",
                                "Model Name",
                                "Model Number",
                                "Color",
                "Quantity" }, '\t'));

                Collections.sort(inventoryAvailability, new Comparator<InventoryAvailability>() {
                        public int compare(InventoryAvailability arg0,InventoryAvailability arg1) {                             
                            int brandComp = arg0.getBrand().compareTo(arg1.getBrand());
                            if(brandComp == 0){
                                return arg0.getModelNumber().compareTo(arg1.getModelNumber());
                            }
                            return brandComp;
                        }
                });
                for(InventoryAvailability invAvailability : inventoryAvailability) {
                        if((invAvailability.getModelNumber().equals("Q50")) || (invAvailability.getItemId() == 1457)) {
                                continue;
                        }
                        bufferedWriter.newLine();
                        bufferedWriter.write(StringUtils.join(
                                        new String[] {
                                                        String.valueOf(invAvailability.getItemId()),
                                                        invAvailability.getBrand(),
                                                        invAvailability.getModelName(),
                                                        invAvailability.getModelNumber(),
                                                        invAvailability.getColor(),
                                                        String.valueOf(invAvailability.getQuantity())}, '\t'));
                }
                bufferedWriter.close();
                return file;
        }

        public static String getHtmlFileGenrator(File file, String tableTitle){

                String htmlFilePath = "/tmp/"+tableTitle+"-file.htm";
                StringBuffer sb = new StringBuffer();
                sb.append("");

                try{
                        BufferedReader br = new BufferedReader(new FileReader(file));
                        String line = "";

                        sb.append("<html><table border=\"1\" align=\"center\">"
                                        + "<caption><b>" + tableTitle + "</b></caption>");

                        int lineCount = 1;
                        while((line = br.readLine())!= null){
                                String[] values = line.split("\t");
                                sb.append("<tr>");
                                for(String value : values){
                                        if(lineCount ==1){
                                                sb.append("<td><b>"+ value.toUpperCase()+"</b></td>");
                                        }else{
                                                sb.append("<td>"+ value+"</td>");
                                        }
                                }
                                sb.append("</tr>");
                                lineCount++;
                        }

                        sb.append("</table></html>");

                        BufferedWriter out = new BufferedWriter(new FileWriter(htmlFilePath));
                        out.write(sb.toString());
                        out.flush();
                        out.close();

                }
                catch(Exception e){
                        e.printStackTrace();
                        return "";
                }
                return htmlFilePath;
        }
}