Your IP : 216.73.216.91


Current Path : /var/node/inatote/Inatote-Backend/adminpanel/
Upload File :
Current File : //var/node/inatote/Inatote-Backend/adminpanel/admin-endpoint.js

import makeWebError from "../helpers/web-error.js"
import validatePageHash from "../helpers/validate-page-hash.js";
import { AuthorizationTokenError } from "../helpers/errors.js";
import makeUserList from '../users/user-list.js'
import makevendorList from "../vendors/vendor-list.js";
import makeProductList from '../products/product-list.js';
import makeaddressList from '../address/address-list.js';
import makeproductList from "../products/product-list.js";
import makeCategoryList from "../categories/category-list.js";
import makeConfigurationList from "../configurations/configuration-list.js"
import makeorderList from "../orders/order-list.js";



export default function makeAdminsEndpointHandler({ database }) {
    return async function handle(httpRequest) {
        switch (httpRequest.method) {
            case 'GET':
                return page(httpRequest)
            default:
                return makeWebError({
                    statusCode: 404,
                    page: "Method not allowed"
                })
        }
    }

    async function page(httpRequest) {
        var apiUrl = 'http://qa.inatote.com:9090/';
        var imagePath = 'http://qa.inatote.com/';
        
        var user = httpRequest.user
        //console.log("body", user);
        try {
            if (user.userType != "Admin")
                throw AuthorizationTokenError("Access not granted");
        } catch (e) {
            //console.log("e", e);
            return makeWebError({
                statusCode: 404,
                page: "adminLogin",
            })
        }
        // var queryInfo = httpRequest.queryParams;
        // try {
        //     if (!queryInfo) {
        //         throw AuthorizationTokenError("Access not granted");
        //     } else if (!queryInfo.pageHash) {
        //         throw AuthorizationTokenError("Access not granted");
        //     } else {
        //         try {
        //             // var user = validatePageHash(queryInfo.pageHash)
        //             var user = httpRequest.user;

        //             if (user.userType != "Admin")
        //                 throw AuthorizationTokenError("Access not granted");
        //         } catch (e) {
        //             throw AuthorizationTokenError("Access not granted");
        //         }
        //     }

        // } catch (e) {
        //     return makeWebError({
        //         statusCode: 404,
        //         page: "adminLogin",
        //     })
        // }
        function formatDate(date){
            //console.log("date-----------" , date , typeof date);
            return new Date(date).toLocaleDateString()
        }

        function capitalize(string){
            let strings = string.split(" ");
            //console.log("strings" , strings);
            let updatesString = ""
            strings.forEach(s=>{
                updatesString =  `${updatesString} ${s[0].toUpperCase()}${s.slice(1)}`
            })
            return updatesString
        }
    
     
        function showImage(image , document){
            //console.log("image" , image);
            if(image.length > 0 ){
              
                // document.body.appendChild(a); 
                // document.getElementById(id).innerHTML = <a href={`http://dev.inatote.com/${image}`}>View Image </a>
                // return <a href={`http://dev.inatote.com/${image}`}>View Image </a>
                return '<a href={`http://dev.inatote.com/${image}`}>View Image </a>'
            }else{
                return "No Image Found"
            }
        }

        //console.log(httpRequest.path)
        switch (httpRequest.path) {
            case '/web/admin/adduser':
                var vendorList = makevendorList({ database })
                var vendors = await vendorList.getItems({})
                //console.log("vendors", vendors);
                debugger
                return {
                    page: 'admin/users/add-user',
                    data: {
                        vendors: vendors
                        ,apiUrl
                        ,imagePath
                    }
                }
            case `/web/admin/listuser`:
                //console.log("-------------------");
                var userList = makeUserList({ database })
                //console.log("------queryParams-----------", httpRequest.queryParams);
                var users = await userList.getItems(httpRequest.queryParams)
                // //console.log("users", users);
                return {
                    page: 'admin/users/user-list',
                    data: {
                        users: users && users.length > 0 && users.reverse() ,
                        userType: httpRequest.queryParams.userType,
                        showImage : showImage
                        ,apiUrl
                        ,imagePath
                    }
                }
            case `/web/admin/KYCStatus`:
                var userList = makeUserList({ database })
                //console.log("------queryParams-----------", httpRequest.queryParams);
                let query = Object.keys(httpRequest.queryParams).length > 0 ? httpRequest.queryParams : {userType : "Rider"} 
                //console.log("query" ,query);
                var users = await userList.getItems(query)
                return {
                    page: 'admin/KYC-status',
                    data: {
                        users: users,
                        KYCStatus: httpRequest.queryParams.KYCStatus
                        ,apiUrl
                        ,imagePath
                    }
                }

            case `/web/admin/viewuser`:
                var userList = makeUserList({ database });
                var addressList = makeaddressList({ database}) ; 
                console.log("------queryParams-----------", httpRequest.queryParams);
                var user = await userList.findByIdwithVendor({ userId : httpRequest.queryParams.id  });
                let address = await  addressList.getItems({_id :  httpRequest.queryParams.id })
                console.log("users", user , address);
                return {
                    page: 'admin/users/view-user',
                    data: {
                        user: user,
                        formatDate : formatDate,
                        address : address
                        ,apiUrl
                        ,imagePath
                       
                    }
            }
            case `/web/admin/viewrider`:
                var userList = makeUserList({ database });
                var addressList = makeaddressList({ database}) ; 
                //console.log("------queryParams-----------", httpRequest.queryParams);
                var user = await userList.findByIdwithVendor({ userId : httpRequest.queryParams.id  });
                let Address = await  addressList.getItems({_id :  httpRequest.queryParams.id })
                //console.log("users", user );
                return {
                    page: 'admin/users/view-rider',
                    data: {
                        user: user,
                        formatDate : formatDate,
                        address : Address
                        ,apiUrl
                        ,imagePath
                      
                    }
            }
            case `/web/admin/cardDetails`:
                var userList = makeUserList({ database });
                var addressList = makeaddressList({ database}) ; 
                console.log("------queryParams-----------", httpRequest.queryParams);
                var user = await userList.findByIdwithVendor({ userId : httpRequest.queryParams.id  });
                let address1 = await  addressList.getItems({_id :  httpRequest.queryParams.id })
                console.log("users", user , address1);
                return {
                    page: 'admin/users/user-create-card',
                    data: {
                        user: user,
                        formatDate : formatDate,
                        address : address1 
                        ,apiUrl
                        ,imagePath
                       
                    }
            }
            case '/web/admin/listvendor':
                var vendorList = makevendorList({ database })
                var vendors = await vendorList.getItems({})

                return {
                    page: 'admin/vendors/vendor-list',
                    data: {
                        vendors: vendors.reverse()
                        ,apiUrl
                        ,imagePath
                    }
                }
            case '/web/admin/viewvendor':
                let id = httpRequest.queryParams.id;
                var vendorList = makevendorList({ database })
                var vendor = await vendorList.findById({vendorId : id});

                return {
                    page: 'admin/vendors/view-vendor',
                    data: {
                        vendor: vendor
                        ,apiUrl
                        ,imagePath
                    }
                }
            case '/web/admin/addvendor':
                return {
                    page: 'admin/vendors/add-vendor',
                    data: {
                        username: "Admin "
                    }
                }

            case '/web/admin/updatevendor':
                return {
                    page: 'admin/vendors/update-vendor',
                    data: {
                        username: "Admin Mateen"
                    }
                }
            case '/web/admin/products':
                var productList = makeProductList({ database })

                var products = await productList.getItems({})
                //console.log("products", products)
                return {
                    page: 'admin/others/product-list',
                    data: {
                        products: products
                        ,apiUrl
                        ,imagePath
                    }
                }

            case '/web/admin/orders':
                var productList = makeProductList({ database })

                //console.log(productList)
                var products = await productList.getItems({})

                return {
                    page: 'admin/others/product-list',
                    data: {
                        products: products
                        ,apiUrl
                        ,imagePath
                    }
                }
                case '/web/admin/updateproduct':
                    var userList = makeUserList({ database });
                    try{
                        //console.log("params" , httpRequest.queryParams)
                    var categoryList = makeCategoryList({ database })
                    var productList = makeproductList({ database })
                    const product =await productList.findById({productId :httpRequest.queryParams.id})
                    var category = await categoryList.findById({categoryId : product.categoryId });
                    var categories = await categoryList.getItems();
                    
                    //console.log("paramsssssssssssssssssssssss" , categories);
                    
                    return {
                        page: 'admin/products/edit-product',
                        data: {
                            // user: usr,
                            categories : categories,
                            product,
                            category
                            ,apiUrl
                            ,imagePath
                        }
                    }
                }
                    catch(e){
                        //console.log("e" , e);
                    }
    
               
                        
                case '/web/admin/listproduct':
                    var userList = makeUserList({ database });
                    var user = await userList.findById({ userId: user.userId })
                    var productList = makeproductList({ database })
                    var products = await productList.getItems({ _id: user.companyId , search_by : "vendor" })
                    //console.log("product agae" , products );
                   
                    return {
                        page: 'admin/products/list-product',
                        data: {
                            products: products,
                            showStock : (stock)=>{
                                let res = "InStock";
                                if(stock == "false" || stock == false){
                                    res = "Out of Stock"
                                }
                                return res
                            },
                            showBlock : (isEnabled)=>{
                                //console.log("isEnabled" , isEnabled);
                                let res = "Block";
                                if(isEnabled == "false" || isEnabled == false){
                                    res = "Unblock"
                                }
                                return res
                            }
                            ,apiUrl
                            ,imagePath
    
                         
                        }
                    }

                    case '/web/admin/listorder':
                        //console.log("liust orser", user.userId);
                        var orderList = makeorderList({ database })
        
                        var orders = await orderList.getItems()
                        //console.log("orderssssssssss" , orders);
                        return {
                            page: 'admin/orders/list-order',
                            data: {
                                orders : orders,
                                capitalize : capitalize,
                                formatDate : formatDate
                                ,apiUrl
                                ,imagePath
                            }
                        }
        
                    case '/web/admin/vieworder':
                        //console.log("list order", user.userId);
                        var orderList = makeorderList({ database })
                        //console.log("list order", user.userId );
                        try{
                            var order =  await orderList.findById({orderId :httpRequest.queryParams.id });
                            console.log("ORDER" , o);
                        }
                        catch(err){
                            //console.log("errrrr" , err);
                        }
                        let findProduct = (id , name)=>{
                            //console.log("id" , id);
                            if(order && order.productDetailsList){
                                let prod = order.productDetailsList;
                                let output = prod.filter(f=> f.productId == id);
                                //console.log("output" , output);
                                return output[0][name];
                            }
                        }
                        //console.log("orderssssssssss" , order);
                        return {
                            page: 'admin/orders/view-order',
                            data: {
                                order : order,
                                capitalize : capitalize,
                                formatDate : formatDate,
                                findProduct : findProduct
                                ,apiUrl
                                ,imagePath
                            }
                        }
                    case '/web/admin/configurations':
                    var confList = makeConfigurationList({ database })
                    try{
                        var conf =  await confList.getItems();
                        let dc = Object.keys(conf[0].deliveryCharges).sort(function(a, b){return a - b});
                        let base = conf[0].forDriver["base"];

                       let km = conf[0].forDriver["km"];
                       let item = conf[0].forDriver["item"];
                        
                       
                        
                        let dCharges = dc.map(i=>{
                            return {
                                name : i,
                                value : conf[0]["deliveryCharges"][i]
                            }
                        })
                    
                   
                    return {
                        page: 'admin/others/configurations',
                        data: {
                            conf : conf && conf.length > 0? conf[0] : null ,
                            capitalize : capitalize,
                            formatDate : formatDate,
                            deliveryCharges : dCharges,
                            base : base ,
                            km : km ,
                            item : item,
                            apiUrl
                            ,imagePath
                        }
                    }
                }
                catch(err){
                    //console.log("errrrr" , err);
                }
            default:
                return {
                    page: 'admin/index',
                    data: {
                        username: "Admin Mateen"
                    }
                }
        }
    }
}