sap.ui.define(

[
  "sap/ui/core/mvc/Controller",
  "sap/m/MessageToast",
  "./FileUpload",
  "./Detail"
],
function(Controller, MessageToast, FileUpload, Detail) {
  "use strict";
  return Controller.extend("fivea.controller.Breeder_Detail", {
    onInit: function() {
      this._oRouter = sap.ui.core.UIComponent.getRouterFor(this);
      this._oRouter
        .getRoute("breeder_detail")
        .attachPatternMatched(this.onDetailMatched, this);
      this._entity_name = 'Breeder';
    },
    onDetailMatched: function(oEvent) {
      this._sObjectID = oEvent.getParameter("arguments").id;
      var sObjectPath = "/breeder(" + this._sObjectID + ")";
      this._sObjectPath = sObjectPath;
      var oView = this.getView();

      oView.bindElement({ path: sObjectPath });

      var oAvatar = this.byId("avatar");
      this._sAvatar = oAvatar;
      this._sAvatarImage = false;
      this.loadAvatar();
    },
    loadAvatar: function() {
      var sImgsPath = this._sObjectPath + "/avatar";
      var that = this;
      var oView = this.getView();
      var oModel = oView.getModel();
      var oAvatar = that.byId("avatar");

      function _loadavsuccs(oData, response) {
        // UploadUrl for Avatar creation (first time)
        var oUrl = "/odata"+that._sObjectPath+"/avatar";
        var oSrc = null;
        if (oData.avatar !== undefined ){
          if (Object.keys(oData.avatar).length === 0) {
            var oI = oData.first_name.trim()[0] + oData.last_name.trim()[0];
            oAvatar.setInitials(oI);
          }
          else{
            oUrl = "/odata"+that._sObjectPath+"/avatar/$value";      
            oSrc = oData.avatar.__metadata.media_src;

// Avatar was already uploaded. UploadUrl should be for an Update // but it's not yet implemented in safrano 0.4

// (POST /Photo(4)/$value …safrano-todo)

            oUrl = oSrc

          }
        }
        oAvatar.setSrc(oSrc);
        oView.byId("fileUploader").setUploadUrl(oUrl);
        oView.byId("fileUploader").setValue("");
      }

      function _loadaverr(oErr) {        }

      oModel.read(this._sObjectPath, 
                  { urlParameters:{$expand: "avatar"}, 
                    success: _loadavsuccs, 
                    error: _loadaverr });
    },
    handleUploadComplete: function(oEvent) {
      if (FileUpload.onComplete(this, oEvent)) {
        this.loadAvatar();
      };
    },
    handleUploadPress: function() {
      FileUpload.onPress(this) ;
    },

    onCultivarSelectionChange: function() {
      var oTable = this.byId("breeder_cultivar_table");
      var iIndex = oTable.getSelectedIndex();

      var oCtxt = oTable.getContextByIndex(iIndex);
      var sToPageParID = oCtxt.getProperty("id");
      this._oRouter.navTo("cultivar_detail", { id: sToPageParID });
    },
    onDeletePress: function(evt) {
      Detail.onDeletePress(this, evt);
    },
    onSave: function() {
      Detail.onSave(this);
    },
    navToList: function(){
      this._oRouter.navTo("breederList", true);
    },
    onNavBack: function() {
      Detail.onNavBack(this);
    }
  });
}

);