Your IP : 216.73.216.91


Current Path : /var/node/inatote/Inatote-Backend/vendor_panel/
Upload File :
Current File : /var/node/inatote/Inatote-Backend/vendor_panel/vendor-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 makeCategoryList from "../categories/category-list.js";
import makeorderList from "../orders/order-list.js";
// import makeCategoryList from "..";
 


export default function makeVendorsEndpointHandler({ database }) {
    return async function handle(httpRequest) {
        switch (httpRequest.method) {
            case 'GET':
                return page(httpRequest)
            default:
                return makeWebError({
                    statusCode: 404,
                    page: "Method not allowed"
                })
        }
    }
   
 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 formatDate(date){
        //console.log("date-----------" , date , typeof date);
        return new Date(parseInt(date)).toLocaleDateString()
    }

    async function page(httpRequest) {
        var user = httpRequest.user;
        var image_url = "https://qa.inatote.com/";
        var apiUrl = 'https://qa.inatote.com';
        //console.log("userssss" , user);
        if(httpRequest.path != "/web/vendor/validateotp"){
            try {
                try {
                    if (user.userType != "Vendor")
                        throw new AuthorizationTokenError("Access not granted");
                } catch (e) {
                    throw new AuthorizationTokenError("Access not granted");
                }
            } catch (e) {
                console.log("e" , e);
                return makeWebError({
                    statusCode: 404,
                    page: "vendorLogin",
                })
            }
           
        }
        
        var userList = makeUserList({ database })
        //console.log("path" , httpRequest.pathParams);
       
        switch (httpRequest.path) {
            case '/web/vendor/adduser':
                var usr = await userList.findById({ userId: user.userId })
                return {
                    page: 'vendor/users/add-user',
                    data: {
                        user: usr,
                        image_url
                    }
                }
            case '/web/vendor/validateotp':
                console.log("USR");
                return {
                    page: 'vendor/validateotp',
                    data: {}
                    //     user: usr,
                    //     image_url
                    // }
                }
            
            case '/web/vendor/listuser':
                // this will be a filtered list for specific vendor
                console.log('users' , user);
                var user = await userList.findById({ userId: user.userId })

                var users = await userList.getItems({ companyId: user.companyId })
                return {
                    page: 'vendor/users/user-list',
                    data: {
                        users: users,
                        image_url,
                        showBlock : (isEnabled)=>{
                            //console.log("isEnabled" , isEnabled);
                            let res = "Block";
                            if(isEnabled == "false" || isEnabled == false){
                                res = "Unblock"
                            }
                            return res
                        },
                    }
                }

                case '/web/vendor/edituser':
                    // this will be a filtered list for specific vendor
                    var user = await userList.findById({ userId: user.userId })
                    console.log('edituser' , user);
                    
                    // var users = await userList.getItems({ companyId: user.companyId })
                    return {
                        page: 'vendor/users/edit-user',
                        data: {
                            user: user,
                            image_url,
                            showBlock : (isEnabled)=>{
                                //console.log("isEnabled" , isEnabled);
                                let res = "Block";
                                if(isEnabled == "false" || isEnabled == false){
                                    res = "Unblock"
                                }
                                return res
                            },
                        }
                    }
                
                case '/web/vendor/viewvendor':
                    var vendorList = makevendorList({ database })
                    var user = await userList.findById({ userId: user.userId })
                    let vendor = await vendorList.findById({vendorId : user.companyId})
                    console.log('edituser' , vendor);
                    
                    return {
                        page: 'vendor/users/vendor-details',
                        data: {
                            vendor: vendor,
                            apiUrl,
                            image_url,
                            
                        }
                    }

                case '/web/vendor/viewuser':
                    // this will be a filtered list for specific vendor
                   let id = httpRequest.queryParams.id;
                    var user = await userList.findById({ userId: id })
    
                    return {
                        page: 'vendor/users/view-user',
                        data: {
                            user: user,
                            image_url
                        }
                    }

                    
                case '/web/vendor/changepassword':
                    // this will be a filtered list for specific vendor
                    // var user = await userList.findById({ userId: user.userId })
                    return {
                        page: 'vendor/users/change-password',
                        data: {
                            fn: `function updatePassword(){
                                alert("nice")
                            }`
                        }
                    }
            case '/web/vendor/addproduct':
                var usr = await userList.findById({ userId: user.userId })
                var categoryList = makeCategoryList({ database })
                //console.log('user.companyId' , user.companyId);
                var categories = await categoryList.getItems({ vendorID: usr.companyId })
                //console.log("category",categories );
                return {
                    page: 'vendor/products/add-product',
                    data: {
                        user: usr,
                        categories : categories,
                        image_url
                    }
                }

            case '/web/vendor/updateproduct':
                try{
                    //console.log("params" , httpRequest.queryParams)
                // let db = await database;
                // var usr = await userList.findById({ userId: user.userId })
                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: 'vendor/products/edit-product',
                    data: {
                        // user: usr,
                        categories : categories,
                        product,
                        category,
                        image_url,
                        showStatus : (status)=>{
                            //console.log("status" , status);
                            let res = "Available";
                            if(status == "Available" ){
                                res = "Disable"
                            }
                            return res
                        },
                    }
                }
            }
                catch(e){
                    //console.log("e" , e);
                }

           
                    
            case '/web/vendor/listproduct':
                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("p" , products , user);
               
                return {
                    page: 'vendor/products/list-product',
                    data: {
                        products: products.reverse(),
                        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
                        },

                     
                    }
                }
            case '/web/vendor/addcategory':
                var usr = await userList.findById({ userId: user.userId })
                //console.log("usr" , usr);
                return {
                    page: 'vendor/categories/add-category',
                    data: {
                        user: usr,
                        image_url
                    }
                }
            case '/web/vendor/listcategory':
                var user = await userList.findById({ userId: user.userId })
                var categoryList =await makeCategoryList({ database })
                //console.log("category",user.companyId  );
                var categories = await categoryList.getItems({ vendorID: user.companyId })
                //console.log("category",categories );
                return {
                    page: 'vendor/categories/list-category',
                    data: {
                        products: categories.length > 0 ? categories :[],
                        image_url
                    }
                }

            case '/web/vendor/updatecategory':
               
            try{
                var categoryList = makeCategoryList({ database })
                let category = await categoryList.findById({categoryId : httpRequest.queryParams.id });
                
                return {
                    page: 'vendor/categories/edit-category',
                    data: {
                        category: category,
                        image_url,
                    }
                }
                
            }
            catch(err){
                //console.log("err" , err);
            }
           
            break;
            case '/web/vendor/listorder':
                //console.log("liust orser", user.userId);
                var orderList = makeorderList({ database })

                var orders = await orderList.getOrderByVendor(user.userId)
                //console.log("orders" , orders);
                return {
                    page: 'vendor/orders/list-order',
                    data: {
                        orders : orders,
                        capitalize : capitalize,
                        formatDate : formatDate,
                        image_url
                    }
                }

            case '/web/vendor/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 });
                
                }
                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: 'vendor/orders/view-order',
                    data: {
                        order : order,
                        capitalize : capitalize,
                        formatDate : formatDate,
                        findProduct : findProduct
                    }
                }

            default:
                // var usr = await userList.getItems({ companyId:  })
                return {
                    page: 'vendor/index',
                    data: image_url
                }
        }
    }
}