public function postCreate()
 {
     $postdata = file_get_contents("php://input");
     if (!empty($postdata)) {
         $userName = Input::get('userName');
         $userEmail = Input::get('userEmail');
         $userMobile = Input::get('userMobile');
         $userAddress1 = Input::get('userAddress1');
         $userAddress2 = Input::get('userAddress2');
         $userCity = Input::get('userCity');
         $userState = Input::get('userState');
         $userPincode = Input::get('userPincode');
         $userType = Input::get('userType');
         $currentUserId = Input::get('currentUserId');
         $currentUserIdPk = Input::get('currentUserIdPk');
         $parentId = Input::get('parentId');
         $parentIdPk = Input::get('parentIdPk');
         $lockbalance = Input::get('lock_balance');
         $mainbalance = Input::get('main_balance');
         $usercount = Input::get('user_count');
         $userStatus = Input::get('userStatus');
         $products = Input::get('products');
         $createdat = Commonmodel::dateandtime();
         $clientIp = Input::get('clientIp');
         if ($userEmail != "" && $userMobile != "" && $userAddress1 != "" && $userAddress2 != "" && $userCity != "" && $userState != "" && $userPincode != "" && $userType != "" && $currentUserId != "" && $currentUserIdPk != "" && $parentIdPk != "" && $userStatus != "" && $products != "" && $userName != '') {
             if (empty($lockbalance)) {
                 $checkbalancedetection = Balancedetection::where('bal_usr_roll', '=', $userType)->get();
                 if (count($checkbalancedetection) > 0) {
                     $lockbalance = Balancedetection::where('bal_usr_roll', '=', $userType)->pluck('bal_detn_amt');
                 } else {
                     $lockbalance = 0;
                 }
             }
             if (empty($mainbalance)) {
                 $mainbalance = 0;
             }
             $checklockbalance = Userfinance::where('ufin_user_id', '=', $currentUserId)->pluck('ufin_lock_balance');
             $checkmainbalance = Userfinance::where('ufin_user_id', '=', $currentUserId)->pluck('ufin_main_balance');
             if ($checkmainbalance < $checklockbalance) {
                 return Response::json(array('status' => 'failure', 'message' => 'Your lock balance is too low to create this user with mentioned amount'));
             } else {
                 $checkbalancecreate = $checkmainbalance - $checklockbalance;
                 if ($checkbalancecreate < $mainbalance) {
                     return Response::json(array('status' => 'failure', 'message' => 'You have Insufficient Balance '));
                 } else {
                     $newbalance = $checkmainbalance - $mainbalance;
                     if (!empty($products)) {
                         $emailcheck = User::where('UD_USER_EMAIL', $userEmail)->get();
                         if (count($emailcheck) > 0) {
                             return Response::json(array('status' => 'failure', 'message' => 'Email ID Already Exist'));
                         } else {
                             $mobilenumcheck = User::where('UD_USER_MOBILE', $userMobile)->get();
                             if (count($mobilenumcheck) > 0) {
                                 return Response::json(array('status' => 'failure', 'message' => 'Phone Number Already Exist'));
                             } else {
                                 if ($userType != 'SP') {
                                     $getusercount = count(User::where('UD_USER_TYPE', '=', $userType)->get());
                                     $checkstatedetailsf = Balancedetection::where('bal_usr_roll', '=', $userType)->pluck('user_reg_count');
                                     $checkindiviudalcount = User::where('UD_ID_PK', '=', $parentIdPk)->pluck('UD_USER_CREATE_COUNT');
                                     if ($getusercount <= $checkstatedetailsf) {
                                         if ($userType == 'SAS') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'SA')->pluck('user_reg_count');
                                         } elseif ($userType == 'SP') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'SA')->pluck('user_reg_count');
                                         } elseif ($userType == 'SPS') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'SP')->pluck('user_reg_count');
                                         } elseif ($userType == 'SD') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'SP')->pluck('user_reg_count');
                                         } elseif ($userType == 'SDS') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'SD')->pluck('user_reg_count');
                                         } elseif ($userType == 'D') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'SD')->pluck('user_reg_count');
                                         } elseif ($userType == 'DS') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'D')->pluck('user_reg_count');
                                         } elseif ($userType == 'FR') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'D')->pluck('user_reg_count');
                                         } elseif ($userType == 'FRS') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'FR')->pluck('user_reg_count');
                                         } elseif ($userType == 'SFR') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'FR')->pluck('user_reg_count');
                                         } elseif ($userType == 'SFRS') {
                                             $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', 'FR')->pluck('user_reg_count');
                                         }
                                         $usercountdetails = count(User::where('UD_USER_TYPE', '=', $userType)->get());
                                     } elseif ($getusercount <= $checkindiviudalcount) {
                                         $usercountdetails = count(User::where('UD_USER_TYPE', '=', $userType)->get());
                                         $currentcountcheck = $checkindiviudalcount;
                                     } else {
                                         return Response::json(array('status' => 'failure', 'message' => 'You Reached Limit for creating Sub Role'));
                                     }
                                 } else {
                                     $getusercount = Balancedetection::where('bal_usr_roll', '=', 'SP')->pluck('user_reg_count');
                                     $checkstatedetailsf = count(User::where('UD_USER_TYPE', '=', $userType)->where('UD_USER_STATE', '=', $userState)->get());
                                     $stateusercountdetails = count(State::where('adt_state_name', '=', $userState)->get());
                                     if (count($checkstatedetailsf) > $getusercount) {
                                         $usercountdetails = count(User::where('UD_USER_TYPE', '=', $userType)->where('UD_USER_STATE', '=', $userState)->get());
                                         $currentcountcheck = State::where('adt_state_name', '=', $userState)->pluck('adt_state_count');
                                         $statpatuserid = State::where('adt_state_name', '=', $userState)->pluck('adt_state_code');
                                     } elseif (count($checkstatedetailsf) <= $getusercount) {
                                         $usercountdetails = count(User::where('UD_USER_TYPE', '=', $userType)->where('UD_USER_STATE', '=', $userState)->get());
                                         $currentcountcheck = Balancedetection::where('bal_usr_roll', '=', $userType)->pluck('user_reg_count');
                                         $statpatuserid = State::where('adt_state_name', '=', $userState)->pluck('adt_state_code');
                                     } else {
                                         return Response::json(array('status' => 'failure', 'message' => 'You Exceed the limit for creating State Partner'));
                                     }
                                 }
                                 if ($usercountdetails > $currentcountcheck) {
                                     return Response::json(array('status' => 'failure', 'message' => 'You Reached Limit for creating Sub Role'));
                                 } else {
                                     if (empty($usercount)) {
                                         if ($userType == 'SAS') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'SA')->pluck('user_reg_count');
                                         } elseif ($userType == 'SP') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'SD')->pluck('user_reg_count');
                                         } elseif ($userType == 'SPS') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'SP')->pluck('user_reg_count');
                                         } elseif ($userType == 'SD') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'D')->pluck('user_reg_count');
                                         } elseif ($userType == 'SDS') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'SD')->pluck('user_reg_count');
                                         } elseif ($userType == 'D') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'FR')->pluck('user_reg_count');
                                         } elseif ($userType == 'DS') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'D')->pluck('user_reg_count');
                                         } elseif ($userType == 'FR') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'SFR')->pluck('user_reg_count');
                                         } elseif ($userType == 'FRS') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'FR')->pluck('user_reg_count');
                                         } elseif ($userType == 'SFR') {
                                             $usercount = Balancedetection::where('bal_usr_roll', '=', 'SFRS')->pluck('user_reg_count');
                                         } else {
                                         }
                                     }
                                     $usernameforpass = preg_replace('/\\s+/', '', $userName);
                                     $userkeysend = $userType . $usernameforpass . str_random(2);
                                     $userkey = md5($userkeysend);
                                     $input = array('UD_USER_ID' => 0, 'UD_USER_KEY' => $userkey, 'UD_USER_NAME' => Input::get('userName'), 'UD_PARENT_ID' => Input::get('parentIdPk'), 'UD_USER_TYPE' => Input::get('userType'), 'UD_USER_EMAIL' => Input::get('userEmail'), 'UD_USER_MOBILE' => Input::get('userMobile'), 'UD_USER_ADDRESS1' => Input::get('userAddress1'), 'UD_USER_ADDRESS2' => Input::get('userAddress2'), 'UD_USER_CITY' => Input::get('userCity'), 'UD_USER_STATE' => Input::get('userState'), 'UD_USER_PINCODE' => Input::get('userPincode'), 'UD_USER_STATUS' => Input::get('userStatus'), 'UD_CREATED_AT' => $createdat, 'UD_CREATED_BY' => Input::get('currentUserId'), 'UD_USER_LINK' => Input::get('UD_USER_LINK'), 'UD_USER_CREATE_COUNT' => $usercount);
                                     $userid = DB::table('adt_user_details')->insertGetId($input);
                                     if ($userType != 'SP') {
                                         $useridgen = $userType . $userid;
                                     } else {
                                         $useridgen = $statpatuserid . $userid;
                                     }
                                     $useridupdate = array('UD_USER_ID' => $useridgen);
                                     User::where('UD_ID_PK', $userid)->update($useridupdate);
                                     $len = count($products);
                                     for ($j = 0; $j < $len; $j++) {
                                         $productinput = array('upa_prod_code' => $products[$j]['prodCode'], 'upa_ud_user_id' => $useridgen, 'upa_access_status' => $products[$j]['prodStatus'], 'upa_created_at' => $createdat, 'upa_created_by' => $currentUserId);
                                         $newproduct = new Userproductaccess();
                                         $newproduct->create($productinput);
                                     }
                                     $userfinance = array('ufin_user_id_pk_fk' => $userid, 'ufin_user_id' => $useridgen, 'ufin_main_balance' => $mainbalance, 'ufin_comm_earned' => 0, 'ufin_total_credited' => 0, 'ufin_total_used' => 0, 'ufin_total_comm' => 0, 'ufin_fee_perc' => 0, 'ufin_lock_balance' => $lockbalance);
                                     $objfinance = new Userfinance();
                                     $objfinance->create($userfinance);
                                     $balanceupdate = array('ufin_main_balance' => $newbalance);
                                     Userfinance::where('ufin_user_id', $parentId)->update($balanceupdate);
                                     Mail::send('users.mails.welcome', array('userid' => $useridgen, 'password' => $userkeysend), function ($message) {
                                         $message->to(Input::get('userEmail'), Input::get('userName'))->subject('Reg: User ID and Password For you AppanDUkan Account');
                                     });
                                     return Response::json(array('status' => 'success', 'message' => 'User have Been Created Successfully'));
                                 }
                             }
                         }
                     } else {
                         return Response::json(array('status' => 'failure', 'message' => 'Atlease Fill Once Product to Register the User'));
                     }
                 }
             }
         } else {
             return Response::json(array('status' => 'failure', 'message' => 'Fill All Manditary Fields'));
         }
     }
 }