public function daftar()
 {
     $data_input = array();
     $data_input['nama_depan'] = Input::get('nama_depan');
     $data_input['nama_belakang'] = Input::get('nama_belakang');
     $data_input['surel'] = Input::get('email');
     $data_input['telpon'] = Input::get('phone');
     $data_input['password'] = Fungsi::enkripsi_password(Input::get('pass'));
     $cekduplikasi = $this->user->cek_duplikasi_email($data_input['surel']);
     if ($cekduplikasi == TRUE) {
         return Redirect::to('/');
     } elseif ($cekduplikasi == FALSE) {
         Users::create($data_input);
         $id = Users::where('surel', '=', $data_input['surel'])->first()->id;
         $user_id = array();
         $user_id['id_user'] = $id;
         UserAvgRate::create($user_id);
         Session::put('logged_in', '1');
         Session::put('level', 'user');
         Session::put('user_id', $id);
         Session::put('user_name', $data_input['nama_depan']);
         return Redirect::to('/bergabung');
     }
 }
 public function give_rate_by_id_kom($id)
 {
     $data['id_user'] = Users::where('id', '=', Session::get('user_id'))->first()->id;
     $data['id_komunitas'] = $id;
     $data['rating'] = Input::get('rating');
     $jml = $this->rating->count_rate_row_by_id($data['id_user']);
     $jmlplus = $jml + 1;
     $total = $this->rating->count_all_rating_by_id($data['id_user']);
     $totalplus = $total + $data['rating'];
     $avgrate['avg_rate'] = $totalplus / $jmlplus;
     $jml2 = $this->komunitas->count_komunitas_rate_by_id($id);
     $jml2plus = $jml2 + 1;
     $ratetotal = $this->komunitas->count_totalrate_by_idkom($id);
     $totalrate = $ratetotal + $data['rating'];
     $ratekom['avg_rate'] = $totalrate / $jml2plus;
     UserRating::create($data);
     UserAvgRate::where('id_user', '=', Session::get('user_id'))->update($avgrate);
     Komunitas::where('id', '=', $id)->update($ratekom);
     $totrate = $this->rating->count_rate_row_by_id($data['id_user']);
     if ($totrate > 1) {
         $ratesim = $this->rating->get_all_user_rate($data['id_user'], $id);
         //$ratesim = $this->komunitas->get_komunitas_rated_except($id);
         foreach ($ratesim as $rated) {
             $similar['id_kom1'] = $id;
             $similar['id_kom2'] = $rated->id_komunitas;
             //$similar['id_kom2'] = $rated->id;
             $user_avg = $this->average->get_average_rate($data['id_user']);
             $rate1 = $this->rating->get_rating_only($data['id_user'], $similar['id_kom1']);
             $rate2 = $this->rating->get_rating_only($data['id_user'], $similar['id_kom2']);
             $similar['similarity'] = ($rate1 - $user_avg) * ($rate2 - $user_avg) / (sqrt(pow($rate1 - $user_avg, 2)) * sqrt(pow($rate2 - $user_avg, 2)));
             $check = $this->komsimilarity->is_compared($similar['id_kom1'], $similar['id_kom2']);
             if ($check == TRUE) {
                 KomSimilarity::where('id_kom1', '=', $id)->where('id_kom2', '=', $rated->id_komunitas)->update($similar);
             } else {
                 KomSimilarity::create($similar);
             }
         }
         // $allkom = Komunitas::get();
         $allkom = $this->komunitas->get_komunitas_rated_except($id);
         foreach ($allkom as $kom) {
             $israted = $this->rating->is_rated($data['id_user'], $kom->id);
             if ($israted == FALSE) {
                 $ceksimilarity = $this->komsimilarity->get_similarity($kom->id);
                 foreach ($ceksimilarity as $mirip) {
                     // $ratekomp = $this->rating->get_rating_only($data['id_user'], $mirip->id_kom2);
                     $ratekomp = $this->rating->get_rating($mirip->id_kom2);
                     $simvalue = $this->komsimilarity->get_similarity_value($mirip->id_kom1, $mirip->id_kom2);
                     $predict['id_user'] = $data['id_user'];
                     $predict['id_komunitas'] = $mirip->id_kom2;
                     $predict['rate_predict'] = $ratekomp * $simvalue / ABS($simvalue);
                     $ceki = $this->predict->is_predicted($data['id_user'], $mirip->id_kom2);
                     if ($ceki == TRUE) {
                         KomRatePredict::where('id_user', '=', $data['id_user'])->where('id_komunitas', '=', $mirip->id_kom2)->update($predict);
                     } else {
                         KomRatePredict::create($predict);
                     }
                 }
             }
         }
     }
     // // $allkom = Komunitas::get();
     // $allkom = $this->komunitas->get_komunitas_rated_except($id);
     // foreach ($allkom as $kom) {
     // 	$israted  = $this->rating->is_rated($data['id_user'], $kom->id);
     // 	if ($israted == FALSE) {
     // 		$ceksimilarity = $this->komsimilarity->get_similarity($kom->id);
     // 		foreach ($ceksimilarity as $mirip) {
     // 			$cekrating  = $this->rating->is_rated($data['id_user'], $mirip->id_kom2);
     // 			if ($cekrating == FALSE) {
     // 				$ratekomp = $this->rating->get_rating_only($data['id_user'], $mirip->id_kom1);
     // 				$simvalue = $this->komsimilarity->get_similarity_value($mirip->id_kom1, $mirip->id_kom2);
     // 				$predict['id_user'] = $data['id_user'];
     // 				$predict['id_komunitas'] = $mirip->id_kom2;
     // 				$predict['rate_predict'] = (($ratekomp * $simvalue)/(ABS($simvalue)));
     // 				$ceki = $this->predict->is_predicted($data['id_user'], $mirip->id_kom2);
     // 				if ($ceki == TRUE) {
     // 					KomRatePredict::update($predict);
     // 				} else {
     // 					KomRatePredict::create($predict);
     // 				}
     // 			}
     // 		}
     // 	}
     // }
     $slug = Komunitas::where('id', '=', $id)->first()->slug;
     return Redirect::to('/komunitas/' . $slug);
 }