﻿AG.Data.Industry = {
    GetIndustryName: function () {
        var requestName = 'getRootIndustry';
        return AG.ClientAPI.createData(CompanyCategory, requestName, [{ Level: 1}], { static: ['Id', 'Code', 'Name'] });
    },
    GetCompetitor: function (industryId) {

        var requestName = 'GetCompetitor' + '_' + industryId;
        return AG.ClientAPI.createData(IndustryRealtime, requestName, [{ Id: industryId}], { static: ['Name', 'ClosePrice', 'PE', 'MarketCapitalization'], dynamic: ['ROALTM', 'ROELTM', 'EVLFI', 'LongtermDebtTotalEquityLFI', 'LongtermDebtTotalAssetsLFI', 'TotalDebtTotalEquityLFI', 'EBITDALFI', 'PB', 'PS', 'ProfitMarginLFI'] });
    },
    GetRootIndustries: function () {
        var requestName = 'getRootIndustry';
        var objIndustry = AG.ClientAPI.createData(CompanyCategory, requestName, [{ Level: 1}], { static: ['Id', 'Code', 'Name'] });
        var data = [];
        for (var i = 0; i < objIndustry.length; i++) {
            data.push({ Code: objIndustry[i].Code });
        }
        return AG.ClientAPI.createData(IndustryRealtime, requestName, data, { static: ['Id', 'Code', 'Name', 'Modified'], dynamic: [/*So cong ty theo nganh*/'NumberOfCompany', /*So CP tang gia duoi 5%*/'NumberStockGainGreater', /*So CP tang gia duoi 5%*/'NumberStockGainLower', /*So CP giam gia lon hon 5%*/'NumberStockLossGreater', /*So CP giam gia duoi 5%*/'NumberStockLossLower', 'TotalValue', 'TotalShare', 'DiffValue', 'DiffPercentValue', 'DiffVolume', 'DiffPercentVolume', /*KLNN ban*/'ForeignSellVolume', /*KL NN mua*/'ForeignBuyVolume', /*GT NN mua*/'ForeignBuyValue', /*GT NN ban*/'ForeignSellValue'] });
    },
    GetSubSectors: function (rootIndustryId) {

        var requestName = 'getSubSectors' + '_' + rootIndustryId;
        return AG.ClientAPI.createData(CompanyCategory, requestName, [{ Level: 4 }, { ParentId: rootIndustryId}], { static: ['Id', 'Code', 'Name'] });
    },
    GetChildIndustry: function (industryId, level) {

        var data = [];
        data.push({ ParentId: industryId });
        if (typeof (level) != 'undefined')
            data.push({ Level: level });
        var requestName = 'GetChildIndustry' + '_' + industryId;
        return AG.ClientAPI.createData(CompanyCategory, requestName, data, { static: ['Id', 'Code', 'Name', 'Level', 'Description'] });
    },
    GetRootIndustriesAndCountNumberCompay: function () {
        var order = [{ Field: "Name", Direction: 'Asc'}];
        var requestName = 'getRootIndustry';
        var objIndustry = AG.ClientAPI.createData(CompanyCategory, requestName, [{ Level: 1}], { static: ['Id', 'Code', 'Name'] }, order);
        var data = [];
        for (var i = 0; i < objIndustry.length; i++) {
            data.push({ Code: objIndustry[i].Code });
        }
        var objData = AG.ClientAPI.createData(IndustryRealtime, requestName, data, { static: ['Id', 'Code', 'Name', 'Modified'], dynamic: ['NumberOfCompany', 'NumberStockGainGreater', 'NumberStockGainLower', 'NumberStockLossGreater', 'NumberStockLossLower', 'TotalValue', 'TotalShare', 'DiffValue', 'DiffPercentValue', 'DiffVolume', 'DiffPercentVolume', /*KLNN ban*/'ForeignSellVolume', /*KL NN mua*/'ForeignBuyVolume', /*GT NN mua*/'ForeignBuyValue', /*GT NN ban*/'ForeignSellValue'] });
        var result = [];
        for (var i = 0; i < objIndustry.length; i++) {
            for (var j = 0; j < objData.length; j++) {
                if (objIndustry[i].Id != 'b076acec-6191-49b7-ab60-ac3d61af8c07' && objIndustry[i].Id != '65eea3e3-db17-439d-a503-e35bd40ad1bd') {
                    if (objIndustry[i].Id == objData[j].Id) {
                        result.push({ Id: objIndustry[i].Id, Code: objIndustry[i].Code, Name: objIndustry[i].Name, NumberOfCompany: objData[j].NumberOfCompany, Modified: objData[j].Modified, NumberStockLossGreater: objData[j].NumberStockLossGreater, NumberStockLossLower: objData[j].NumberStockLossLower, NumberStockGainGreater: objData[j].NumberStockGainGreater, NumberStockGainLower: objData[j].NumberStockGainLower, TotalValue: objData[j].TotalValue, TotalShare: objData[j].TotalShare,
                            DiffValue: objData[j].DiffValue, DiffPercentValue: objData[j].DiffPercentValue, DiffVolume: objData[j].DiffVolume, DiffPercentVolume: objData[j].DiffPercentVolume, ForeignSellVolume: objData[j].ForeignSellVolume, ForeignBuyVolume: objData[j].ForeignBuyVolume, ForeignBuyValue: objData[j].ForeignBuyValue, ForeignSellValue: objData[j].ForeignSellValue
                        });
                    }
                }
            }
        }
        return result;
    },
    GetCompanyBySubSector: function (industryId, startIndex, endIndex, orderBy, orderType) {

        var order = [];
        if (typeof (orderBy) != "undefined")
            order = [{ Field: orderBy, Direction: 'ASC'}];
        else
            order = [{ Field: 'ID', Direction: 'ASC'}];
        if (typeof (orderType) != "undefined")
            order[0].Direction = orderType;
        if (orderBy != 'Code')
            order.push({ Field: 'Code', Direction: 'ASC' });
        var objIndustry = this.GetChildIndustry(industryId, 4);
        var data = [{ Type: AG.Config.CompanyType.Listed }, { Type: AG.Config.CompanyType.Fund }, { Industry: industryId }, { StartIndex: startIndex }, { EndIndex: endIndex}];
        for (var i = 0; i < objIndustry.length; i++) {
            data.push({ Industry: objIndustry[i].Id });
        }
        var requestNameCompany = 'GetCompanyBySubSector_NoLanguage' + '_' + industryId + '_' + startIndex + '_' + endIndex + '_' + orderBy + '_' + orderType;
        var objCompany = AG.ClientAPI.createData(CompanyRealtime, requestNameCompany, data, { static: ['Id', 'Code', 'Name', 'ClosePrice', 'DiffPercent', 'StockExchange', 'TotalShare'] }, order);
        return objCompany;
    },
    GetCountCompanyBySubSector: function (industryId) {
        var obj = CompanyRealtime;
        var objIndustry = this.GetChildIndustry(industryId, 4);
        var data = [{ Type: AG.Config.CompanyType.Listed }, { Type: AG.Config.CompanyType.Fund }, { Industry: industryId}];
        for (var i = 0; i < objIndustry.length; i++) {
            data.push({ Industry: objIndustry[i].Id });
        }
        return obj.getCount(data);
    },
    GetRootIndustrySummary: function () {

        var requestName = 'getSubSectors';
        return AG.ClientAPI.createData(IndustryRealtime, requestName, [{ Level: 1}], { static: ['Name', 'ClosePrice', 'PE', 'MarketCapitalization', 'ROALTM', 'ROELTM', 'EVLFI', 'LongtermDebtTotalEquityLFI', 'LongtermDebtTotalAssetsLFI', 'TotalDebtTotalEquityLFI', 'EBITDALFI', 'PB', 'PS', 'ProfitMarginLFI'] });
    },

    GetListCompanyByIndustry: function (industryId) {
        var requestName = 'GetListCompanyByIndustry' + '_' + industryId;
        return AG.ClientAPI.createData(CompanyRealtime, requestName, [{ Industry: industryId}], { static: ['Id', 'Code'] });
    },

    GetCompanyRootIndustry: function (rootIndustryId, startIndex, endIndex, orderBy, orderType) {
        var order = [];
        if (typeof (orderBy) != "undefined")
            order = [{ Field: orderBy, Direction: 'ASC'}];
        else
            order = [{ Field: 'ID', Direction: 'ASC'}];
        if (typeof (orderType) != "undefined")
            order[0].Direction = orderType;
        var requestName = 'GetCompanyRootIndustry' + '_' + rootIndustryId + '_' + startIndex + '_' + endIndex + '_' + orderBy + '_' + orderType;
        var filter = [{ Field: 'RootIndustry', Type: 'Static', Operator: '=', Value: rootIndustryId}];
        var objData = AG.ClientAPI.createData(CompanyRealtime, requestName, [{ StartIndex: startIndex }, { EndIndex: endIndex }, { Type: AG.Config.CompanyType.Listed }, { Type: AG.Config.CompanyType.Fund}], { static: ['Id', 'Code', 'Name', 'ClosePrice', 'RefPrice', 'Diff', 'DiffPercent', 'TotalShare', 'TotalValue', 'Type', 'MarketCapitalization', 'EVLFI', 'LongtermDebtTotalEquityLFI', 'LongtermDebtTotalAssetsLFI', 'TotalDebtTotalEquityLFI', 'EBITDALFI', 'StockExchange'], dynamic: ['PSLTM', 'EPSLTM', 'PriceBookValueShareTotalEquityLTM', 'PELTM'] }, order, filter);
        return objData;
    },
    GetCountCompanyRootIndustry: function (rootIndustryId) {
        var filter = [{ Field: 'RootIndustry', Type: 'Static', Operator: '=', Value: rootIndustryId}];
        return CompanyRealtime.getCount([{ Type: AG.Config.CompanyType.Listed }, { Type: AG.Config.CompanyType.Fund}], undefined, undefined, filter);
    },
    GetIndexIndustry: function () {

        var objIndustry = this.GetRootIndustries();
        var data = [];
        for (var i = 0; i < objIndustry.length; i++) {
            data.push({ Code: objIndustry[i].Code });
        }
        var requestName = 'GetindexIndustry';
        return AG.ClientAPI.createData(IndustryRealtime, requestName, data, { static: ['Id', 'Code', 'Name', 'ClosePrice', 'Diff', 'DiffPercent', 'MarketCapitalization', 'TotalShare', 'TotalValue'] });
    },
    //lay chi so cong ty cho phan so sanh
    GetComparison: function (industryId) {
        return AG.ClientAPI.createData(IndustryRealtime, 'GetComparision' + '_NoLanguage' + industryId, [{ Id: industryId}], { static: ['Id', 'Code'], dynamic: ['PELTM', 'PELFY', 'PELFI', 'PriceBookValueShareTotalEquityLTM', 'PriceBookValueShareTotalEquityLFI', 'ROELTM', 'ROALTM', 'ROELFY', 'ROALFY', 'GrossProfitMarginLTM', 'GrossProfitMarginLFY', 'GrossProfitMarginLFI', 'IncomeAfterTaxMarginLTM', 'IncomeAfterTaxMarginLFY', 'IncomeAfterTaxMarginLFI', 'TotalDebtTotalEquityLFI', 'TotalDebtTotalEquityLFY', 'PriceBookValueShareTotalEquityLFY', 'MarketCapitalization', 'DiffPercentPrice5Days', 'DiffPercentPrice1Month'] });
    },
    //lay so ban ghi theo nganh va san
    GetCountByStockExchangeAndRootIndustry: function (stockExchangeId, rootIndustryId) {
        var data = [];
        if (typeof (stockExchangeId) != 'undefined')
            data.push({ StockExchange: stockExchangeId });
        var filter = [{ Field: 'RootIndustry', Type: 'Static', Index: 0, Operator: '=', Value: rootIndustryId}];
        return CompanyRealtime.getCount(data, undefined, undefined, filter);
    },
    GetCountByStockExchangeAndIndustry: function (stockExchangeId, industryId) {
        var data = [];
        if (typeof (stockExchangeId) != 'undefined')
            data.push({ StockExchange: stockExchangeId });
        var filter = [{ Field: 'Industry', Type: 'Static', Index: 0, Operator: '=', Value: industryId}];
        return CompanyRealtime.getCount(data, undefined, undefined, filter);
    },
    //lay cac ban ghi theo nganh va san
    GetListStockExchangeAndRootIndustry: function (stockExchangeId, rootIndustryId, startIndex, endIndex) {
        var data = [{ StartIndex: startIndex }, { EndIndex: endIndex}];
        if (typeof (stockExchangeId) != 'undefined')
            data.push({ StockExchange: stockExchangeId });
        var filter = [{ Field: 'RootIndustry', Type: 'Static', Index: 0, Operator: '=', Value: rootIndustryId}];
        var requestName = 'GetListStockExchangeAndRootIndustry_NoLanguage' + stockExchangeId + rootIndustryId + startIndex + endIndex;
        return AG.ClientAPI.createData(CompanyRealtime, requestName, data, { static: ['Id', 'Code', 'ClosePrice', 'DiffPercent', 'TotalShare', 'PriceBookValueShareTotalEquityLFY', 'MarketCapitalization'], dynamic: ['PELTM'] }, [{ Field: 'MarketCapitalization', Direction: 'DESC'}], filter);
    },
    GetListStockExchangeAndIndustry: function (stockExchangeId, industryId, startIndex, endIndex) {
        var data = [{ StartIndex: startIndex }, { EndIndex: endIndex}];
        if (typeof (stockExchangeId) != 'undefined')
            data.push({ StockExchange: stockExchangeId });
        var filter = [{ Field: 'Industry', Type: 'Static', Index: 0, Operator: '=', Value: industryId}];
        var requestName = 'GetListStockExchangeAndIndustry_NoLanguage' + stockExchangeId + industryId + startIndex + endIndex;
        return AG.ClientAPI.createData(CompanyRealtime, requestName, data, { static: ['Id', 'Code', 'ClosePrice', 'DiffPercent', 'TotalShare', 'PriceBookValueShareTotalEquityLFY', 'MarketCapitalization'], dynamic: ['PELTM'] }, [{ Field: 'MarketCapitalization', Direction: 'DESC'}], filter);
    },
    //thong tin giao dich NDTTNN cua rootIndustry
    GetForeignRootIndustry: function () {
        return AG.ClientAPI.createData(CompanyCategory, 'getRootIndustry', [{ Level: 1}], { static: ['Id', 'Code', 'Name'], dynamic: [/*KLNN ban*/'ForeignSellVolume', /*KL NN mua*/'ForeignBuyVolume', /*GT NN mua*/'ForeignBuyValue', /*GT NN ban*/'ForeignSellValue'] });
    }
}

