CasperSecurity
<?php
namespace App\Http\Livewire\Tendermanagement\Tendertab;
use Livewire\Component;
use Livewire\WithPagination;
use Illuminate\Support\Facades\Notification;
use App\Notifications\TenderActivityAssignToUser;
use App\Models\AssignTenderActivity;
use App\Models\TenderActivity;
use App\Models\User;
use App\Models\CreateTender;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Auth;
class TenderActivityRequired extends Component
{
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $page_name="Tender Required Activity ";
public $search;
public $perPage=10;
public $orderBy='id';
public $orderAsc='1';
public $tender_id,$activity_sl_no,$tender_activity_id,$created_by,$modified_by,$activity_status,$check_start_date,$check_end_date,
$tender_name,$activity_start_date,$activity_end_date;
public $activity_assigned_to;
public $modelid;
public $showmodal=false;
public $successmsg="The Activity data has been assigned successfully.";
public $updatemsg="The Activity data has been updated successfully.";
public $deletemsg="The Activity data has been deleted successfully.";
public $duplicateerrormsg="Sorry !!! Activity name has already exists in our database. Please Try Another Name";
public $errormsg="Sorry !!! Something went wrong. Please Try Again.";
protected $listeners = ['delete'];
public function dateToBeChecked(){
$res=AssignTenderActivity::where('tender_id', $this->tender_id)->latest()->first();
$r=CreateTender::where('id',$this->tender_id)->first();
if($res>0){
$this->check_start_date=$res->activity_end_date;
$this->check_end_date=$r->tender_closing_date;
}
else{
// dd($this->tender_id);
$this->check_start_date=$r->tender_opening_date;
$this->check_end_date=$r->tender_closing_date;
//dd()
}
}
public $rules=[
'tender_activity_id'=>'required',
'activity_start_date'=>'required',
'activity_end_date'=>'required|after_or_equal:activity_start_date',
// 'activity_assigned_to'=>'required',
];
public function updatedActivityStartDate($value)
{
$res=AssignTenderActivity::where('tender_id', $this->tender_id)->latest()->first();
if($res){
$this->check_start_date=$res->activity_end_date;
// $this->check_end_date=$r->tender_closing_date;
if($value<$this->check_start_date){
$this->activity_start_date=null;
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'error',
'message' => 'Activity start date should be greater than the previous activity end date or tender'
]);
}
}
}
public $updatedrules=[
'tender_activity_id'=>'required',
'activity_start_date'=>'required',
'activity_end_date'=>'required|after_or_equal:activity_start_date',
// 'activity_assigned_to'=>'required',
];
public $messages=[
'tender_activity_id.required'=>'This field is required',
'activity_start_date.required'=>'This field is required',
'activity_end_date.required'=>'This field is required',
'activity_assigned_to.required'=>'This field is required',
// 'activity_status.required'=>'This field is required',
];
public function updatingSearch()
{
$this->resetPage();
}
public function showmodalclick(){
$this->dispatchBrowserEvent('clearActivityUser');
$this->dispatchBrowserEvent('loadActivityUser');
$res=AssignTenderActivity::where('tender_id',$this->tender_id)->get();
if(sizeof($res)==0){
$this->activity_sl_no=1;
}
else{
$this->activity_sl_no=sizeof($res)+1;
}
$this->resetValidation();
$this->showmodal=true;
$this->cleanVar();
//$this->dispatchBrowserEvent('livewire:load');
}
public function closemodalclick(){
$this->resetValidation();
$this->showmodal=false;
}
public function updateclick($id){
$this->dispatchBrowserEvent('clearActivityUser');
$this->modelid=$id;
$this->loadData($this->modelid);
$this->showmodal=true;
}
public function deleteclick($id){
$this->modelid=$id;
$this->dispatchBrowserEvent('confirmdelete',[
'message'=>'Are you sure want to delete this data ?',
'funcname'=>'delete'
]);
}
public function cleanVar(){
$this->modelid=null;
$this->tender_activity_id=null;
$this->activity_status=null;
$this->activity_start_date=null;
$this->activity_end_date=null;
$this->activity_assigned_to=null;
// $this->showmodal=false;
}
public function loadData($id)
{
$response = AssignTenderActivity::find($id);
if ($response) {
$this->tender_id = $response['tender_id'];
$this->activity_sl_no = $response['activity_sl_no'];
$this->tender_activity_id = $response['tender_activity_id'];
$this->activity_start_date = $response['activity_start_date'];
$this->activity_end_date = $response['activity_end_date'];
$this->activity_assigned_to = explode(',',$response['activity_assigned_to']);
$this->activity_status = $response['activity_status'];
//dd( $this->activity_assigned_to);
$this->dispatchBrowserEvent('loadExistingActivityUser',[
'userarray'=>$this->activity_assigned_to
]);
}
// if(sizeof($this->activity_assigned_to) > 0){
// $this->dispatchBrowserEvent('setActivityUser');
// }
}
// public function updatedActivityStartDate($value){
// $tender_details=CreateTender::where('id',$this->tender_id)->first();
// }
// public function updatedActivityEndDate($value)
// {
// // dd($value);
// }
public function modelData(){
$data=[];
$res=AssignTenderActivity::where('id',$this->modelid)->first();
if($res){
$this->tender_id=session('up_tender_id');
$this->activity_sl_no=$res->activity_sl_no;
$data=[
'tender_id'=>$this->tender_id,
'activity_sl_no'=> $this->activity_sl_no,
'tender_activity_id'=>$this->tender_activity_id,
'activity_start_date'=>$this->activity_start_date,
'activity_end_date'=>$this->activity_end_date,
'activity_assigned_to'=>implode(',',$this->activity_assigned_to),
'modified_by'=>Auth::user()->id,
];
}
else{
$data=[
'tender_id'=>$this->tender_id,
'activity_sl_no'=> $this->activity_sl_no,
'tender_activity_id'=>$this->tender_activity_id,
// 'activity_status'=>$this->activity_status,
'activity_start_date'=>$this->activity_start_date,
'activity_end_date'=>$this->activity_end_date,
'activity_assigned_to'=>implode(',',$this->activity_assigned_to),
'created_by'=>Auth::user()->id,
];
}
return $data;
}
public function save()
{
$this->validate($this->rules, $this->messages);
// dd("ha ja");
$assigns=AssignTenderActivity::where('tender_id',$this->tender_id)->where('tender_activity_id',$this->tender_activity_id)->first();
if($assigns){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'error',
'message' => 'Activity already exists'
]);
}
else{
if(empty($this->activity_assigned_to[0])){
// dd(1);
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>'Sorry !!! Activity should be assigned to atleast one user'
]);
}
else {
// dd(2);
$response = AssignTenderActivity::create($this->modelData());
if ($response) {
foreach ($this->activity_assigned_to as $user) {
$userinfo = User::find(Auth::user()->id);
$sendtouser = User::find($user);
Notification::sendNow($sendtouser, new TenderActivityAssignToUser($response, $userinfo, $sendtouser));
}
$this->cleanVar();
$this->dispatchBrowserEvent('closeOffCanvas');
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'message' => $this->successmsg
]);
} else {
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'error',
'message' => $this->errormsg
]);
}
}
}
}
public function update()
{
$this->validate($this->updatedrules, $this->messages);
$response = AssignTenderActivity::find($this->modelid);
if ($response) {
$response->update($this->modelData());
if ($response) {
$this->cleanVar();
$this->dispatchBrowserEvent('closeOffCanvas');
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'message' => $this->updatemsg
]);
} else {
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'error',
'message' => $this->errormsg
]);
}
}
}
public function delete()
{
$response = AssignTenderActivity::find($this->modelid);
if ($response) {
if ($response->delete()) {
$res=AssignTenderActivity::where('tender_id',$this->tender_id)->orderBy('activity_sl_no','asc')->get();
foreach($res as $key => $r){
$r->activity_sl_no=$key+1;
$r->save();
}
$this->cleanVar();
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'message' => $this->deletemsg
]);
} else {
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'error',
'message' => $this->errormsg
]);
}
}
}
public function getUsers(){
$res=User::where('status',1)->where('id','!=',1)->get();
return $res;
}
public function read()
{
$activity = AssignTenderActivity::where('tender_id',$this->tender_id)
->orderBy($this->orderBy, $this->orderAsc ? 'asc' : 'desc')->paginate($this->perPage);
return $activity;
}
public function mount(){
}
public function render()
{
$users=$this->getUsers();
if(session('up_tender_id')){
$sessiondata=session('up_tender_id');
}
else{
$sessiondata=session('saved_tender_id');
}
$this->tender_id=$sessiondata;
$tender_det=CreateTender::where('id',$this->tender_id)->first();
if($tender_det){
$this->tender_name= $tender_det->tender_no;
}
// dd($tender_det);
// $this->dateToBeChecked();
$tenderactivityies=TenderActivity::where('status',1)->get();
$activities=$this->read();
return view('livewire.tendermanagement.tendertab.tender-activity-required',compact('activities','tenderactivityies','users','tender_det'));
}
}