CasperSecurity
<?php
namespace App\Http\Livewire\Tendermanagement;
use Livewire\Component;
use App\Models\CreateTender;
use App\Models\AssignTenderActivity;
use App\Models\TenderActivity;
use App\Models\AssignTenderActivityUserAction;
use App\Models\TenderEstimationTable;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use Livewire\WithFileUploads;
class ManageTenderActivityLivewire extends Component
{
use WithFileUploads;
public $act_status;
public $showmodal=false;
public $docmodal=false;
public $assign_id,$user_action_taken,$action_document,$action_taken_for,$created_by,$modified_by,$status,$tender_status;
public $assign_activity_status=[];
public $action_id;
public $modelid;
public $docreq=false;
public $modal_status;
public $tender_modal=false;
public $estimation_section=false;
public $estimation_btn=false;
public $assign_acttivity_name;
public $item_name,$category,$rate,$amount,$remarks,$unit,$quantity;
public $total_amount=0;
// public function updatedActStatus($value){
// dd($value);
// }
public $rules=[
'assign_id'=>'required',
'user_action_taken'=>'required',
// 'action_taken_for'=>'required',
/*'documement_path'=>'required|max:255'*/
];
public $updatedrules=[
'assign_id'=>'required',
'user_action_taken'=>'required',
//'action_taken_for'=>'required',
];
public $messages=[
'assign_id.required'=>'This field is required',
'user_action_taken.required'=>'This field is required',
// 'user_action_taken.max'=>'This field allows maximum 255 character',
// 'action_taken_for.required'=>'This field is required',
];
public function actionclick($id,$status){
//dd($id);clean
//dd($status);
$this->cleanVar();
$this->modal_status=$status;
$this->action_id=$id;
// dd($this->action_id);
$this->assign_id= $this->action_id;
// dd()
// $this->dispatchBrowserEvent('livewire:load');
$this->showmodal=true;
$activitydet=AssignTenderActivity::with('getTenderActivity')->where('id',$id)->first();
// if( $activitydet)
$act_det=TenderActivity::where('id',$activitydet->tender_activity_id)->first();
if($act_det->estimstion_flag==1){
$this->estimation_btn=true;
}
if($activitydet){
$this->assign_acttivity_name=$activitydet->getTenderActivity->activity_name;
$this->action_taken_for=$status;
}
}
public function closemodalclick(){
$this->showmodal=false;
}
protected $listeners = ['delete'];
public function updateclick($id){
$this->modelid=$id;
$this->assign_id= $this->modelid;
// $this->resetValidation();
$this->showmodal=true;
$this->loadData($id);
}
public function loadData($id){
$data=TenderDocument::find($id);
if($data){
$this->assign_id=$data->assign_id;
$this->user_action_taken=$data->documement_path;
$this->action_taken_for=$data->action_taken_for;
$this->status=$data->status;
}
//dd($this->lat);
}
public function updatingSearch()
{
$this->resetPage();
}
public function updateStatus($activityId,$status,$key)
{
$res=AssignTenderActivityUserAction::where('assign_id',$activityId)->get();
$activitydet=AssignTenderActivity::with('getTenderActivity')->where('id',$activityId)->first();
$prev=AssignTenderActivity::where('activity_sl_no',$activitydet->activity_sl_no-1)->where('deleted_at',null)->where('tender_id',session('manage_tender_id'))->first();
// dd($activitydet->activity_start_date);
$current_day= (Carbon::now()->format('Y-m-d H:i:s'));
// dd(Carbon::parse($current_day)>= Carbon::parse($activitydet->activity_start_date));
if(Carbon::parse($current_day)>= Carbon::parse($activitydet->activity_start_date)){
if($activitydet->activity_sl_no==1){
if($status==4){
$this->actionclick($activityId,$activitydet->activity_status);
$this->action_taken_for=4;
}elseif($status==0){
$this->actionclick($activityId,$activitydet->activity_status);
$this->action_taken_for=0;
}
else{
$activity = AssignTenderActivity::find($activityId);
$activity->activity_status = $status;
$activity->save();
}
}
else{
if($prev->activity_status==4 || $prev->activity_status==0){
if($status==4){
$this->actionclick($activityId,$activitydet->activity_status);
$this->action_taken_for=4;
}elseif($status==0){
$this->actionclick($activityId,$activitydet->activity_status);
$this->action_taken_for=0;
}
else{
$activity = AssignTenderActivity::find($activityId);
$activity->activity_status = $status;
$activity->save();
}
}
else{
$this->assign_activity_status[$key]=1;
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>'Action on previous activity is pending'
]);
}
}
}
else{
//dd(2);
$activitydet=AssignTenderActivity::with('getTenderActivity')->where('id',$activityId)->first();
$this->assign_activity_status[$key]=$activitydet->activity_status;
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>'Wait till the activity assigned date'
]);
}
}
// public function updateAction(){
// }
public function estimation(){
$this->estimation_section=true;
$this->estimation_btn=false;
}
public function closeestimate(){
$this->estimation_section=false;
$this->estimation_btn=true;
}
public function updateTenderStatus($tn_id,$tn_status){
$this->tender_modal==true;
$ted_Det=CreateTender::where('id',$tn_id)->first();
if($ted_Det->tender_status>6){
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>'This could not be modified further after awarded or lost'
]);
}
else{
if($tn_status==6){
$tn_up_det=AssignTenderActivity::where('tender_id',$tn_id)->whereIn('activity_status', [1, 2, 3])
->get();
if(sizeof($tn_up_det)>0){
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>'Sorry !!! Activities are in Progress.It need to be completed'
]);
$this->tender_status=null;
}
else{
$res=CreateTender::where('id',$tn_id)->first();
if($res){
$res->update([
'tender_status'=>$tn_status
]);
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'Tender status updated'
]);
$this->tender_status=null;
}
}
}
elseif($tn_status==7){
$tn_up_det=AssignTenderActivity::where('tender_id',$tn_id)->whereIn('activity_status', [1, 2, 3, 0])
->get();
if(sizeof($tn_up_det)>0){
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>'Sorry !!! All activities needed to be Completed'
]);
$this->tender_status=null;
}
else{
$res=CreateTender::where('id',$tn_id)->first();
if($res){
$res->update([
'tender_status'=>$tn_status
]);
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'Sorry !!! Tender status updated'
]);
}
$this->tender_status=null;
}
}
else{
$res=CreateTender::where('id',$tn_id)->first();
if($res){
$res->update([
'tender_status'=>$tn_status
]);
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'Tender status updated'
]);
}
}
}
}
public function showdocclick($id){
$this->docmodal=true;
Storage::url(requiredDocument);
}
public function cleanVar(){
$this->modelid=null;
$this->user_action_taken=null;
$this->action_taken_for=null;
$this->action_document=null;
$this->status=null;
// $this->showmodal=false;
}
public function modelData(){
//dd($this->action_taken_for);
if ($this->action_document && $this->action_document instanceof \Illuminate\Http\UploadedFile) {
$this->action_document = $this->action_document->store('requiredDocument');
}
if($this->action_id){
$assign=AssignTenderActivity::where('id',$this->action_id)->first();
$activity_Det=TenderActivity::where('id',$assign->tender_activity_id)->first();
if( $activity_Det->completion_doc_flag==1){
$this->docreq=true;
}
$data=[
'assign_id'=>$this->action_id,
'user_action_taken'=>$this->user_action_taken,
'action_taken_for'=>$this->action_taken_for,
'action_document'=>$this->action_document,
'created_by'=>Auth::user()->id,
'status'=>'1'
];
}
if($this->modelid){
$data=[
'assign_id'=>$this->assign_id,
'user_action_taken'=>$this->user_action_taken,
'action_taken_for'=>$this->action_taken_for,
'action_document'=>$this->action_document,
'created_by'=>Auth::user()->id,
'status'=>$this->status
];
}
return $data;
}
public $estimation_rules=[
'assign_id'=>'required',
'item_name'=>'required',
'amount'=>'required'
];
public $estimation_messages=[
'assign_id.required'=>'This field is required',
'item_name.required'=>'This field is required',
'amount.required'=>'This field is required',
];
public function updatedQuantity($value){
if($this->rate){
$this->amount=$this->rate*$value;
}
}
public function updatedRate($value){
if($this->quantity){
$this->amount=$this->quantity*$value;
}
}
public function updatedAmount($value){
if(!$this->rate && !$this->quantity){
$this->rate=$value;
$this->quantity=1;
}
elseif($this->rate && $this->quantity){
$this->amount=$this->rate*$this->quantity;
}
}
public function estimationModelData(){
if($this->action_id){
$data=[
'assign_id'=>$this->action_id,
'item_name'=>$this->item_name,
'category'=>$this->category,
'unit'=>$this->unit,
'quantity'=>$this->quantity,
'rate'=>$this->rate,
'amount'=>$this->amount,
'remarks'=>$this->remarks,
'created_by'=>Auth::user()->id,
];
}
return $data;
}
public function cleanEstimation(){
$this->item_name=null;
$this->category=null;
$this->quantity=null;
$this->rate=null;
$this->amount=null;
$this->remarks=null;
$this->unit=null;
}
public function addEstimation(){
if($this->estimationModelData()){
$this->validate($this->estimation_rules,$this->estimation_messages);
$response=TenderEstimationTable::create($this->estimationModelData());
if($response){
$this->cleanEstimation();
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'The Estimation has been saved successfully'
]);
}
}
}
public function deleteestclick($id){
$response=TenderEstimationTable::find($id);
if($response){
$response->delete();
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'The Estimation has been removed successfully'
]);
}
}
public function save(){
// dd($this->modelData());
if($this->modelid){
//dd('1');
$this->validate($this->updatedrules,$this->messages);
$response=AssignTenderActivityUserAction::where('id',$this->modelid)->latest()->first();
$response->update($this->modelData());
if($response){
$this->cleanVar();
//$this->dispatchBrowserEvent('closeOffCanvas');
//emotify('success', 'The Department data has been saved successfully');
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'The Document has been updated successfully'
]);
}
}
elseif($this->action_id){
$this->validate($this->rules,$this->messages);
//dd($this->modelData());
$response=AssignTenderActivityUserAction::create($this->modelData());
if($response){
if($response->action_taken_for==0){
$res=AssignTenderActivity::where('id',$response->assign_id)->first();
$res->update([
"activity_status"=>0
]);
}
elseif($response->action_taken_for==4){
$res=AssignTenderActivity::where('id',$response->assign_id)->first();
$res->update([
"activity_status"=>4
]);
}
$this->user_action_taken=null;
$this->action_taken_for=3;
$this->action_document=null;
// $this->cleanVar();
//$this->dispatchBrowserEvent('closeOffCanvas');
//emotify('success', 'The Department data has been saved successfully');
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'The Document has been saved successfully'
]);
}
}
// $this->status=true;
// $response=TenderDocument::where('document_name',$this->document_name)->latest()->first();
// if($response){
// $this->dispatchBrowserEvent('showsuccessmsg',[
// 'type'=>'error',
// 'message'=>'Sorry !!! Document name has already exists in our database. Please Try Another Name'
// ]);
// }else{
// $response=TenderDocument::create($this->modelData());
// if($response){
// $this->cleanVar();
// $this->dispatchBrowserEvent('closeOffCanvas');
// //emotify('success', 'The Department data has been saved successfully');
// $this->dispatchBrowserEvent('showsuccessmsg',[
// 'type'=>'success',
// 'message'=>'The Document has been saved successfully'
// ]);
// }
// }
//Str::kebab($this->dept_name)
}
public function update()
{
$this->validate($this->updatedrules,$this->messages);
$response=TenderDocument::find($this->modelid);
if($response){
$response->update($this->modelData());
if($response){
$this->cleanVar();
$this->dispatchBrowserEvent('closeOffCanvas');
//emotify('success', 'The Department data has been saved successfully');
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'The Document has been updated successfully'
]);
}
else{
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'message'=>'Sorry !!! Document name has already exists in our database. Please Try Another Name'
]);
}
}
}
public function delete(){
$response=TenderDocument::find($this->modelid);
if($response){
$response->delete();
$this->cleanVar();
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'success',
'message'=>'The Document has been deleted successfully'
]);
}
}
// public function read(){
// $tender_document=TenderDocument::search($this->search)->orderBy($this->orderBy, $this->orderAsc ? 'asc' : 'desc')->paginate($this->perPage);
// return $tender_document;
// }
// public function read(){
// $response=CreateTender::with('tenderActivites')->where('id',session('manage_tender_id'))->first();
// return $response;
// }
public function render()
{
// // $tender_details=$this->read();
// if($this->action_id){
// //dd($action_taken);
// }
$action_taken=[];
$estimationdet=[];
$tender_info=CreateTender::where('id',session('manage_tender_id'))->first();
// dd($tender_info);
$yet_to_start=AssignTenderActivity::where('tender_id',session('manage_tender_id'))->where('activity_status',1)->where('deleted_at', null)->get();
//dd($yet_to_start);
$started=AssignTenderActivity::where('tender_id',session('manage_tender_id'))->where('activity_status',2)->where('deleted_at', null)->get();
$in_progress=AssignTenderActivity::where('tender_id',session('manage_tender_id'))->where('activity_status',3)->where('deleted_at', null)->get();
$completed=AssignTenderActivity::where('tender_id',session('manage_tender_id'))->where('activity_status',4)->where('deleted_at', null)->get();
$canceled=AssignTenderActivity::where('tender_id',session('manage_tender_id'))->where('activity_status',0)->where('deleted_at', null)->get();
//dd($in_progress);
if($this->action_id){
$action_taken=AssignTenderActivityUserAction::where('assign_id',$this->action_id)->get();
$estimationdet=TenderEstimationTable::where('assign_id',$this->action_id)->get();
// $this->total_amount=0;
foreach($estimationdet as $est){
$this->total_amount+=$est->amount;
}
//dd( $action_taken);
}
return view('livewire.tendermanagement.manage-tender-activity-livewire',compact('yet_to_start','started','in_progress','completed','canceled','action_taken','tender_info','estimationdet'));
}
}