first commit
This commit is contained in:
111
resources/views/crud/generated/programs/create.blade.php
Normal file
111
resources/views/crud/generated/programs/create.blade.php
Normal file
@ -0,0 +1,111 @@
|
||||
@extends('backend.template')
|
||||
@section('content')
|
||||
<!-- start page title -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="page-title-box d-sm-flex align-items-center justify-content-between">
|
||||
<h4 class="mb-sm-0">{{ label('Add Program') }}</h4>
|
||||
<div class="page-title-right">
|
||||
<ol class="breadcrumb m-0">
|
||||
<li class="breadcrumb-item"><a href="javascript: void(0);">Dashboards</a></li>
|
||||
<li class="breadcrumb-item active">Add Program</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end page title -->
|
||||
<form action="{{route('programs.store')}}" id="storeCustomForm" method="POST">
|
||||
@csrf
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-3">{{createCustomSelect('tbl_institutions', 'title', 'institution_id', '', 'Institutions','institutions_id', 'form-control select2','status<>-1')}}</div>
|
||||
<div class="col-lg-9">{{createText("title","title","Title")}}</div>
|
||||
<div class="border border-dashed"></div>
|
||||
<div class="col-lg-12 pb-2">{{createTextarea("description","description ckeditor-classic","Description")}}</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Programe</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-4">{{createText("institution","institution","Institution")}}</div>
|
||||
<div class="col-lg-4">{{createText("program_level","program_level","Program Level")}}</div>
|
||||
<div class="col-lg-2">{{createText("years","years","Years")}}</div>
|
||||
<div class="col-lg-2">{{createText("prospects","prospects","Prospects")}}</div>
|
||||
<div class="col-lg-4">{{createText("city","city","City")}}</div>
|
||||
<div class="col-lg-2">{{createText("psw","psw","Psw")}}</div>
|
||||
<div class="col-lg-2">{{createText("intake","intake","Intake")}}</div>
|
||||
|
||||
|
||||
<div class="col-lg-2">{{createDate("application_open","Application Open", "",date('Y-m-d'))}}</div>
|
||||
<div class="col-lg-2">{{createDate("application_deadline","Application Deadline", "",date('Y-m-d'))}}</div>
|
||||
<!-- <div class="col-lg-4">{{createDate("application_deadline","application_deadline","Application Deadline")}}</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Level</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-4">{{createText("level","level","Level")}}</div>
|
||||
<div class="col-lg-4">{{createText("min_level","min_level","Min Level")}}</div>
|
||||
<div class="col-lg-4">{{createText("min_level_faculty","min_level_faculty","Min Level Faculty")}}</div>
|
||||
<div class="col-lg-4">{{createText("min_level_score","min_level_score","Min Level Score")}}</div>
|
||||
<div class="col-lg-4">{{createText("min_level_passout","min_level_passout","Min Level Passout")}}</div>
|
||||
<div class="col-lg-4">{{createText("min_level_optional_requirement","min_level_optional_requirement","Min Level Optional Requirement")}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title mb-0">Marks Required</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">{{createText("prof_test_required","prof_test_required","Prof Test Required")}}</div>
|
||||
<div class="col-lg-6">{{createText("prof_test_accepted","prof_test_accepted","Prof Test Accepted")}}</div>
|
||||
<div class="col-lg-6">{{createText("prof_test_min_score","prof_test_min_score","Prof Test Min Score")}}</div>
|
||||
<div class="col-lg-6">{{createText("prof_test_band_score","prof_test_band_score","Prof Test Band Score")}}</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="col-lg-12 pb-2">{{createPlainTextArea("remarks","remarks ","Remarks")}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb-4"><?php createButton("btn-primary btn-store","","Submit"); ?>
|
||||
<?php createButton("btn-danger btn-cancel","","Cancel",route('programs.index')); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
@endsection
|
37
resources/views/crud/generated/programs/edit.blade.php
Normal file
37
resources/views/crud/generated/programs/edit.blade.php
Normal file
@ -0,0 +1,37 @@
|
||||
@extends('backend.template')
|
||||
@section('content')
|
||||
<div class='card'>
|
||||
<div class='card-header d-flex justify-content-between align-items-center'>
|
||||
<h2 class="">{{ label('Edit Programs') }}</h2>
|
||||
<?php createButton("btn-primary btn-cancel","","Cancel",route('programs.index')); ?>
|
||||
|
||||
</div>
|
||||
<div class='card-body'>
|
||||
<form action="{{route('programs.update',[$data->program_id])}}" id="updateCustomForm" method="POST" >
|
||||
@csrf <input type=hidden name='program_id' value='{{$data->program_id}}'/>
|
||||
<div class="row"><div class="col-lg-6">{{createCustomSelect('tbl_institutions', 'title', 'institution_id', $data->institutions_id, 'Institutions Id','institutions_id', 'form-control select2','status<>-1')}}</div><div class="col-lg-6">{{createText("title","title","Title",'',$data->title)}}
|
||||
</div><div class="col-lg-12 pb-2">{{createTextarea("description","description ckeditor-classic","Description",$data->description)}}
|
||||
</div><div class="col-lg-6">{{createText("program_level","program_level","Program Level",'',$data->program_level)}}
|
||||
</div><div class="col-lg-6">{{createText("years","years","Years",'',$data->years)}}
|
||||
</div><div class="col-lg-6">{{createText("psw","psw","Psw",'',$data->psw)}}
|
||||
</div><div class="col-lg-6">{{createText("prospects","prospects","Prospects",'',$data->prospects)}}
|
||||
</div><div class="col-lg-6">{{createText("intake","intake","Intake",'',$data->intake)}}
|
||||
</div><div class="col-lg-6">{{createText("institution","institution","Institution",'',$data->institution)}}
|
||||
</div><div class="col-lg-6">{{createText("city","city","City",'',$data->city)}}
|
||||
</div><div class="col-lg-6">{{createText("application_open","application_open","Application Open",'',$data->application_open)}}
|
||||
</div><div class="col-lg-6">{{createText("application_deadline","application_deadline","Application Deadline",'',$data->application_deadline)}}
|
||||
</div><div class="col-lg-6">{{createText("level","level","Level",'',$data->level)}}
|
||||
</div><div class="col-lg-6">{{createText("min_level","min_level","Min Level",'',$data->min_level)}}
|
||||
</div><div class="col-lg-6">{{createText("min_level_faculty","min_level_faculty","Min Level Faculty",'',$data->min_level_faculty)}}
|
||||
</div><div class="col-lg-6">{{createText("min_level_score","min_level_score","Min Level Score",'',$data->min_level_score)}}
|
||||
</div><div class="col-lg-6">{{createText("min_level_passout","min_level_passout","Min Level Passout",'',$data->min_level_passout)}}
|
||||
</div><div class="col-lg-6">{{createText("min_level_optional_requirement","min_level_optional_requirement","Min Level Optional Requirement",'',$data->min_level_optional_requirement)}}
|
||||
</div><div class="col-lg-6">{{createText("prof_test_required","prof_test_required","Prof Test Required",'',$data->prof_test_required)}}
|
||||
</div><div class="col-lg-6">{{createText("prof_test_accepted","prof_test_accepted","Prof Test Accepted",'',$data->prof_test_accepted)}}
|
||||
</div><div class="col-lg-6">{{createText("prof_test_min_score","prof_test_min_score","Prof Test Min Score",'',$data->prof_test_min_score)}}
|
||||
</div><div class="col-lg-6">{{createText("prof_test_band_score","prof_test_band_score","Prof Test Band Score",'',$data->prof_test_band_score)}}
|
||||
</div><div class="col-lg-12 pb-2">{{createPlainTextArea("remarks",'',"Remarks",$data->remarks)}}
|
||||
</div> <div class="col-md-12"><?php createButton("btn-primary btn-update","","Submit"); ?>
|
||||
<?php createButton("btn-primary btn-cancel","","Cancel",route('programs.index')); ?>
|
||||
</div> </form></div></div>
|
||||
@endsection
|
239
resources/views/crud/generated/programs/index.blade.php
Normal file
239
resources/views/crud/generated/programs/index.blade.php
Normal file
@ -0,0 +1,239 @@
|
||||
@extends('backend.template')
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h2>{{ label("Programs List") }}</h2>
|
||||
<a href="{{ route('programs.create') }}" class="btn btn-primary"><span>{{label("Create New")}}</span></a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table dataTable" id="tbl_programs" data-url="{{ route('programs.sort') }}">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th class="tb-col text-uppercase"><span class="overline-title">{{label("S No.")}}</span></th>
|
||||
<th class="tb-col text-uppercase"><span class="overline-title">{{ label("Institutions") }}</span></th>
|
||||
<th class="tb-col text-uppercase"><span class="overline-title">{{ label("Title") }}</span></th>
|
||||
<th class="tb-col text-uppercase"><span class="overline-title">{{ label("Alias") }}</span></th>
|
||||
<th class="tb-col text-uppercase"><span class="overline-title">{{ label("Institution") }}</span></th>
|
||||
<th class="tb-col text-uppercase"><span class="overline-title">{{ label("Program Level") }}</span></th>
|
||||
<th class="tb-col text-uppercase"><span class="overline-title">{{ label("Years") }}</span></th>
|
||||
<th class="tb-col text-uppercase"><span class="overline-title">{{ label("Intake") }}</span></th>
|
||||
<th class="tb-col text-uppercase" data-sortable="false"><span class="overline-title">{{ label("Action") }}</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$i = 1;
|
||||
@endphp
|
||||
@foreach ($data as $item)
|
||||
|
||||
<tr data-id="{{$item->program_id}}" data-display_order="{{$item->display_order}}" class="draggable-row <?php echo ($item->status==0)?"bg-light bg-danger":""; ?>">
|
||||
<td class="tb-col">{{ $i++ }}</td><td class="tb-col">
|
||||
{!! getFieldData("tbl_institutions", "title", "institution_id", $item->institutions_id) !!}
|
||||
</td><td class="tb-col">{{ $item->title }}</td>
|
||||
<td class="tb-col">
|
||||
<div class="alias-wrapper" data-id="{{$item->program_id}}">
|
||||
<span class="alias">{{ $item->alias }}</span>
|
||||
<input type="text" class="alias-input d-none" value="{{ $item->alias }}" id="alias_{{$item->program_id}}" />
|
||||
</div>
|
||||
<span class="badge badge-soft-primary change-alias-badge">change alias</span>
|
||||
</td>
|
||||
<td class="tb-col">{{ $item->program_level }}</td>
|
||||
<td class="tb-col">{{ $item->intake }}</td>
|
||||
<td class="tb-col">{{ $item->institution }}</td>
|
||||
<td class="tb-col">
|
||||
<div class="dropdown d-inline-block">
|
||||
<button class="btn btn-soft-secondary btn-sm dropdown" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<i class="ri-more-fill align-middle"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a href="{{route('programs.show',[$item->program_id])}}" class="dropdown-item"><i class="ri-eye-fill align-bottom me-2 text-muted"></i> {{label("View")}}</a></li>
|
||||
<li><a href="{{route('programs.edit',[$item->program_id])}}" class="dropdown-item edit-item-btn"><i class="ri-pencil-fill align-bottom me-2 text-muted"></i> {{label("Edit")}}</a></li>
|
||||
<li>
|
||||
<a href="{{route('programs.toggle',[$item->program_id])}}" class="dropdown-item toggle-item-btn" onclick="confirmToggle(this.href)">
|
||||
<i class="ri-article-fill align-bottom me-2 text-muted"></i> {{ ($item->status==1)?label('Unpublish'):label('Publish') }}
|
||||
</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{route('programs.destroy',[$item->program_id])}}" class="dropdown-item remove-item-btn" onclick="confirmDelete(this.href)">
|
||||
<i class="ri-delete-bin-fill align-bottom me-2 text-muted"></i> {{ label('Delete') }}
|
||||
</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push("css")
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.5/css/dataTables.bootstrap4.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/rowreorder/1.4.0/css/rowReorder.dataTables.min.css">
|
||||
@endpush
|
||||
@push("js")
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.68/pdfmake.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.68/vfs_fonts.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/1.13.5/js/jquery.dataTables.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/buttons/2.4.1/js/buttons.html5.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/rowreorder/1.4.0/js/dataTables.rowReorder.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function(e) {
|
||||
$('.change-alias-badge').on('click', function() {
|
||||
var aliasWrapper = $(this).prev('.alias-wrapper');
|
||||
var aliasSpan = aliasWrapper.find('.alias');
|
||||
var aliasInput = aliasWrapper.find('.alias-input');
|
||||
var isEditing = $(this).hasClass('editing');
|
||||
aliasInput.toggleClass("d-none");
|
||||
if (isEditing) {
|
||||
// Update alias text and switch to non-editing state
|
||||
var newAlias = aliasInput.val();
|
||||
aliasSpan.text(newAlias);
|
||||
aliasSpan.show();
|
||||
aliasInput.hide();
|
||||
$(this).removeClass('editing').text('Change Alias');
|
||||
var articleId = $(aliasWrapper).data('id');
|
||||
var ajaxUrl = "{{ route('programs.updatealias') }}";
|
||||
var data = {
|
||||
articleId: articleId,
|
||||
newAlias: newAlias
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: ajaxUrl,
|
||||
type: 'POST',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
data: data,
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error(error);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Switch to editing state
|
||||
aliasSpan.hide();
|
||||
aliasInput.show().focus();
|
||||
$(this).addClass('editing').text('Save Alias');
|
||||
}
|
||||
});
|
||||
var mytable = $(".dataTable").DataTable({
|
||||
ordering: true,
|
||||
rowReorder: {
|
||||
//selector: 'tr'
|
||||
},
|
||||
});
|
||||
|
||||
var isRowReorderComplete = false;
|
||||
|
||||
mytable.on('row-reorder', function(e, diff, edit) {
|
||||
isRowReorderComplete = true;
|
||||
});
|
||||
|
||||
mytable.on('draw', function() {
|
||||
if (isRowReorderComplete) {
|
||||
var url = mytable.table().node().getAttribute('data-url');
|
||||
var ids = mytable.rows().nodes().map(function(node) {
|
||||
return $(node).data('id');
|
||||
}).toArray();
|
||||
|
||||
console.log(ids);
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: "POST",
|
||||
headers: {
|
||||
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
data: {
|
||||
id_order: ids
|
||||
},
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error(error);
|
||||
}
|
||||
});
|
||||
isRowReorderComplete=false;
|
||||
}
|
||||
});
|
||||
});
|
||||
function confirmDelete(url) {
|
||||
event.preventDefault();
|
||||
Swal.fire({
|
||||
title: 'Are you sure?',
|
||||
text: 'You will not be able to recover this item!',
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Delete',
|
||||
cancelButtonText: 'Cancel',
|
||||
reverseButtons: true
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: 'DELETE',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
success: function(response) {
|
||||
Swal.fire('Deleted!', 'The item has been deleted.', 'success');
|
||||
location.reload();
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
Swal.fire('Error!', 'An error occurred while deleting the item.', 'error');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
function confirmToggle(url) {
|
||||
event.preventDefault();
|
||||
Swal.fire({
|
||||
title: 'Are you sure?',
|
||||
text: 'Publish Status of Item will be changed!! if Unpublished, links will be dead!',
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Proceed',
|
||||
cancelButtonText: 'Cancel',
|
||||
reverseButtons: true
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: 'GET',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
},
|
||||
success: function(response) {
|
||||
Swal.fire('Updated!', 'Publishing Status has been updated.', 'success');
|
||||
location.reload();
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
Swal.fire('Error!', 'An error occurred.', 'error');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@endpush
|
||||
|
29
resources/views/crud/generated/programs/show.blade.php
Normal file
29
resources/views/crud/generated/programs/show.blade.php
Normal file
@ -0,0 +1,29 @@
|
||||
@extends('backend.template')
|
||||
@section('content')
|
||||
<div class='card'>
|
||||
<div class='card-header d-flex justify-content-between align-items-center'>
|
||||
<h2><?php echo label('View Details'); ?></h2>
|
||||
<?php createButton("btn-primary btn-cancel","","Back to List",route('programs.index')); ?>
|
||||
|
||||
</div>
|
||||
<div class='card-body'>
|
||||
|
||||
|
||||
|
||||
<p><b>Institutions Id : </b> <span>{{$data->institutions_id}}</span></p><p><b>Title : </b> <span>{{$data->title}}</span></p><p><b>Alias : </b> <span>{{$data->alias}}</span></p><p><b>Description : </b> <span>{{$data->description}}</span></p><p><b>Program Level : </b> <span>{{$data->program_level}}</span></p><p><b>Years : </b> <span>{{$data->years}}</span></p><p><b>Psw : </b> <span>{{$data->psw}}</span></p><p><b>Prospects : </b> <span>{{$data->prospects}}</span></p><p><b>Intake : </b> <span>{{$data->intake}}</span></p><p><b>Institution : </b> <span>{{$data->institution}}</span></p><p><b>City : </b> <span>{{$data->city}}</span></p><p><b>Application Open : </b> <span>{{$data->application_open}}</span></p><p><b>Application Deadline : </b> <span>{{$data->application_deadline}}</span></p><p><b>Level : </b> <span>{{$data->level}}</span></p><p><b>Min Level : </b> <span>{{$data->min_level}}</span></p><p><b>Min Level Faculty : </b> <span>{{$data->min_level_faculty}}</span></p><p><b>Min Level Score : </b> <span>{{$data->min_level_score}}</span></p><p><b>Min Level Passout : </b> <span>{{$data->min_level_passout}}</span></p><p><b>Min Level Optional Requirement : </b> <span>{{$data->min_level_optional_requirement}}</span></p><p><b>Prof Test Required : </b> <span>{{$data->prof_test_required}}</span></p><p><b>Prof Test Accepted : </b> <span>{{$data->prof_test_accepted}}</span></p><p><b>Prof Test Min Score : </b> <span>{{$data->prof_test_min_score}}</span></p><p><b>Prof Test Band Score : </b> <span>{{$data->prof_test_band_score}}</span></p><p><b>Display Order : </b> <span>{{$data->display_order}}</span></p><p><b>Status : </b> <span
|
||||
class="{{$data->status == 1 ? 'text-success' : 'text-danger'}}">{{$data->status == 1 ? 'Active' : 'Inactive'}}</span></p><p><b>Remarks : </b> <span>{{$data->remarks}}</span></p><p><b>Createdby : </b> <span>{{$data->createdby}}</span></p><p><b>Updatedby : </b> <span>{{$data->updatedby}}</span></p><div class="d-flex justify-content-between">
|
||||
<div>
|
||||
<p><b>Created On :</b> <span>{{$data->created_at}}</span></p>
|
||||
<p><b>Created By :</b> <span>{{$data->createdBy}}</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p><b>Updated On :</b> <span>{{$data->updated_at}}</span></p>
|
||||
<p><b>Updated By :</b> <span>{{$data->updatedBy}}</span></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endSection
|
Reference in New Issue
Block a user