$zalando_codility_case2

by mtambulut

JavaScript

'use strict';

/* global CustomError, getLikedBrands, getTopBrandsForGender */

function solution(U, N) {
    return new Promise((resolve, reject) => {

        Promise.all([getLikedBrands(U.id),  getTopBrandsForGender(U.gender)]).then(function(values){
            var likedBrands = values[0];
            var topBrandsForGender = values[1];
            var result = [];
            var count = N;
            if(count < likedBrands.length){
                result = result.concat(getBrandNameArray(likedBrands.slice(0, count)));
            }else{
                result = result.concat(getBrandNameArray(likedBrands));
                count = count - likedBrands.length;
                if(count < topBrandsForGender.length){
                    result = result.concat(getBrandNameArray(topBrandsForGender.slice(0, count)));
                }else{
                    reject(new CustomError("Not enough data"));
                }
            }
            resolve(result);
        });
    });
}
function getBrandNameArray(brandArray){
    var result = [];
    for(var i = 0; i < brandArray.length; i++){
        result.push(brandArray[i].name);
    }
    return result;
}