console.log('hello console for main.js');
var stuff = ['initialstuff'];
angular
  .module('caisse', [])
  .controller('CaisseCtrl', ['$scope', '$http', function ($scope, $http, stuff) {
      $scope.productsFromDB = [];   // loaded products
      $scope.categories = [];       // product categories
      $scope.sellingComment = "";      // comment about the client or the current selling
      $scope.initLoadDone = false;  // becames true after first init of product loading
      $scope.recentSellings = [];
      $scope.lesParams = {};
      $scope.paidAmount = 0;
      $scope.pausedSelling = [];
      $scope.activeItemsSold = [];    // list of products ID to sell
      $scope.activeSelling = [];    // list of products to sell
      $scope.activeFestival = {     // an event where selling take place
          id          : null,
          name        : "le festival",
          dateCreation: new Date(),
          commentaire : ""
      };
      /**
       * get the sum of products prices
       * @param list
       * @returns {number}
       */
      $scope.sumOfList = function (list) {
          let counter = 0;
          for (let i = 0; i < list.length; i++) {
              counter += list[i].price;
          }
          return counter;
      };
      /**
       * sum of current selling list prices
       * @returns {number}
       * @constructor
       */
      $scope.CurrentSellingTotal = function () {
          return $scope.sumOfList($scope.activeSelling);
      };

      $scope.regenActiveSellingIds = function () {
          $scope.activeItemsSold = [];
          for (let obj in $scope.activeSelling) {
              $scope.activeItemsSold.push(obj.id);
          }
      };
      $scope.stuff = stuff;
      $scope.setActiveSelling = function (selling) {
          $scope.activeSelling = selling;
      };
      $scope.pauseSelling = function (selling) {
          $scope.pausedSelling.push(selling);
      };
      $scope.addProduct = function (product) {
          $scope.activeSelling.push(product);
          $scope.activeItemsSold.push(product.id);
      };
      $scope.pauseSelling = function () {
          $scope.pausedSelling.push(angular.copy($scope.activeSelling));
          $scope.activeSelling = [];
      };
      $scope.setBackPausedSelling = function (sellingList, index) {
          $scope.activeSelling = angular.copy(sellingList);
          $scope.pausedSelling.splice(index, 1);
      };
      $scope.clearCurrentSelling = function () {
          $scope.paidAmount = 0;
          $scope.sellingComment = "";
          $scope.activeSelling = [];
      };

      // http related calls
      $scope.fetchProductsFromDB = function () {
          console.log('fetch products...');
          $http.get('get-my-products').then((rep) => {

              console.log('ok', rep);
              $scope.categories = rep.data.categories;
              $scope.productsFromDB = rep.data.categories;
              $scope.recentSellings = rep.data.history;
              // festoche
              $scope.activeFestival.id = rep.data.lastFestival.id;
              $scope.activeFestival.name = rep.data.lastFestival.name;
              $scope.activeFestival.dateCreation = rep.data.lastFestival.dateCreation;
              $scope.activeFestival.commentaire = rep.data.lastFestival.commentaire;
              //done
              $scope.initLoadDone = true;
          }, (err) => {
              console.log(err);
              $scope.initLoadDone = true;
          });
      };

      $scope.sendForm = function () {
          let lesParams = {
              paidByClient  : $scope.paidAmount,
              sellingComment: $scope.sellingComment,
              activeSelling : $scope.activeSelling,
              activeFestival: $scope.activeFestival
          };
          $scope.lesParams = lesParams;
          $http({
              method : 'POST',
              url    : 'add-selling',
              headers: {
                  'Content-Type': 'application/json'
              },
              data   : lesParams  // pass in data as strings
          }).then(function (rep) {
              $scope.clearCurrentSelling();
              console.log(rep);
              if (!rep.success) {
                  // if not successful, bind errors to error variables
                  $scope.errors = rep.errors;
              } else {
                  // if successful, bind success message to message
                  $scope.successMessage = rep.data.message;
                  // changer le type de bout de phrase demandé
                  $scope.formData["tykayn_portfoliobundle_cadexqphrasepart[type]"]["$viewValue"] = 'nouveauType';
              }
          }, function (rep) {
              console.log('nope! ', rep.data);
          })
          ;
      };

      $scope.init = (function () {
          $scope.fetchProductsFromDB();
      })();
  }]);