var App = angular.module('myApp',  ['firebase','ngSanitize']);

App.directive('ngEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keydown keypress", function (event) {
            if(event.which === 13) {
                scope.$apply(function (){
                     scope.$eval(attrs.ngEnter);
                });
 
                event.preventDefault();
            }
        });
    };
});

App.controller("mainCtrl", function($scope,$timeout,$firebaseObject,$rootScope,$http,$sce) 
{

$scope.variables = {};	
$scope.recentUsers = [];
$scope.messages = [];
$scope.session;

	$.get( base_url+'Home/get_session', function( data ) 
	{
	    $scope.session = jQuery.parseJSON(data);
	    //console.log($scope.session)
	})

	$timeout(function()
	{
		$.get( base_url+'Home/get_opponentData', function( data ) 
		{
			//console.log("connect")
		    var opponent_user = jQuery.parseJSON(data);
		    if(opponent_user.status!='error')
		    {$scope.load_chat(opponent_user);}
		})
	},200);
	

	$scope.load_recent_chat = function() 
	{
		$.ajax({
		url: base_url+"Home/get_recent_chat",
		type: "GET",
		dataType: "json",
								
			success: function(result,status){
			$timeout( function(){	
			 $scope.recentUsers = result;
			  //console.log($scope.recentUsers); 
			  //console.log($scope.allUsers);
			  
			},100);
			  				  
			},
			complete(xhr,status){
				/*console.log('completed')*/
			},
			error(xhr,status,error){
			   // alert(status)
			}
		})
		$timeout(function() {$scope.load_recent_chat();}, 3000);
	}

	$scope.load_recent_chat();


	$.ajax({
	url: base_url+"Home/get_all_chat_users",
	type: "GET",
	dataType: "json",
							
		success: function(result,status){
		$timeout( function(){	
		 $scope.allUsers = result;
		  //console.log($scope.allUsers,$scope.recentUsers); 
		},100);
		  				  
		},
		complete(xhr,status){
			/*console.log('completed')*/
		},
		error(xhr,status,error){
		   // alert(status)
		}
	})
		
	

$scope.load_chat =function(object)
{
	
	if(angular.isDefined(object.chat_id))
	{
		$scope.chat_id = object.chat_id;
	}

	$scope.list = [];
	if($scope.session.type=="DOCTOR" || $scope.session.type=="COLLABORATOR")
	{
		$scope.opponent = {'name' : object.pat_name,'id' : object.patient_id,'pic' : object.pat_pic};
		$scope.chat_id = 'P'+object.patient_id+'@_@D'+$scope.session.id;
	}
	else
	{
		$scope.opponent = {'name' : object.doc_name,'id' : object.doctor_id,'pic' : object.doc_pic};
		$scope.chat_id = 'P'+$scope.session.id+'@_@D'+object.doctor_id;
	}
	//console.log($scope.chat_id)
	//console.log($scope.opponent)
	$('.full_screen_loader').removeClass('hidden');
	var connRef = firebase.database().ref('chats/'+$scope.chat_id+'/').orderByChild("time");
	connRef.on('value', function(snapshot) 
	{
		$('.full_screen_loader').addClass('hidden');
		$scope.messages = snapshot.val();
		angular.forEach($scope.messages,(data,key)=>{
			var d = new Date(data.time);
			var dat=(d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear());
			var a = $scope.list.indexOf(dat);
			if(a=="-1")
			{ 
			  $scope.list.push(dat);
			  data.show_date = true;
			}
			else
			{data.show_date = false;}
			
		})
		$timeout(function(){$scope.$apply()},5);
		$timeout(function() 
		{
			var scroller = document.getElementById("chat_autoscroll");
			scroller.scrollTop = scroller.scrollHeight;
		}, 10,false);
		//console.log($scope.messages)
	});
// connectedRef.on("value", function(snap) {
}




$scope.test = function()
{
	alert("!");
}


  $scope.trustAsHtml = function(string) 
  {
    return $sce.trustAsHtml(string);
	};

$scope.sentmsg = function (msg,opp)
{
	if(msg.length>0)
	{
		
		//console.log(msg,$scope.session,$scope.opponent)
		if($scope.session.type=="DOCTOR" || $scope.session.type=="COLLABORATOR")
		{
			var object = {	'doctor_id':Number($scope.session.id),
					'doctor_name':$scope.session.name,
					'doctor_photo':$scope.session.profile_photo,
					'message':msg,
					'sender_type' : 1,
					'patient_id':Number($scope.opponent.id),
					'patient_name':$scope.opponent.name,
					'patient_photo':$scope.opponent.pic,
					'photo_url':"",
					'time':new Date().getTime(),
					'type':0,
					'video_url':""};

			//UPDATING RECENT MSG IN MYSQL DB
	   		var recent_obj = { 'chat_id': $scope.chat_id,
						  'patient_id': Number($scope.opponent.id),
						  'doctor_id': Number($scope.session.id),
						  'sender_type':1,
						   'msg': msg,
						   'photo_url': '', 
						   'video_url': '',
							'type': 0, 
						   'time': new Date().getTime()
						}
		}

		if($scope.session.type=="PATIENT")
		{
			var object = {	'doctor_id':Number($scope.opponent.id),
					'doctor_name':$scope.opponent.name,
					'doctor_photo':$scope.opponent.pic,
					'message':msg,
					'sender_type' : 0,
					'patient_id':Number($scope.session.id),
					'patient_name':$scope.session.name,
					'patient_photo':$scope.session.profile_photo,
					'photo_url':"",
					'time':new Date().getTime(),
					'type':0,
					'video_url':""};

			//UPDATING RECENT MSG IN MYSQL DB
	   		var recent_obj = { 'chat_id': $scope.chat_id,
						  'patient_id': Number($scope.session.id),
						  'doctor_id': Number($scope.opponent.id),
						  'sender_type':0,
						   'msg': msg,
						   'photo_url': '', 
						   'video_url': '',
							'type': 0, 
						   'time': new Date().getTime()
						}
		}
		
	  //firebase.database().ref('chats/'+$scope.chat_id+'/').push(object); //Update msg in firebase
	  var newRef = firebase.database().ref('chats/'+$scope.chat_id+'/').push().then((snap) => 
	  {
	  	object.id = snap.key;
	  	firebase.database().ref('chats/'+$scope.chat_id+'/'+snap.key).set(object); //Update msg in firebase
     	//console.log(snap.key );
  	  });
		
		if($scope.session.type=="DOCTOR" || $scope.session.type=="COLLABORATOR")
		{recent_obj.sender_type = 1;}
		if($scope.session.type=="PATIENT")
		{recent_obj.sender_type = 0;}

	   $.post(base_url+"Home/update_recent_chat",recent_obj,(data,status)=>{
	   	//console.log(data)
	   	$timeout( function()
	   	{	
			 $scope.recentUsers = JSON.parse(data);
			},100);
	   });

	   $scope.variables.texttosent = '';
	}
	

}

function findWithAttr(array, attr, value) {
    for(var i = 0; i < array.length; i += 1) {
        if(array[i][attr] === value) {
            return i;
        }
    }
    return -1;
}


})