Bug 32030: Add users to licenses
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
03d23be15d
commit
4d9ed4b897
|
|
@ -22,6 +22,7 @@ use Koha::Database;
|
|||
use base qw(Koha::Object);
|
||||
|
||||
use Koha::Acquisition::Bookseller;
|
||||
use Koha::ERM::UserRoles;
|
||||
use Koha::ERM::Documents;
|
||||
|
||||
=head1 NAME
|
||||
|
|
@ -34,6 +35,31 @@ Koha::ERM::License - Koha ERM License Object class
|
|||
|
||||
=cut
|
||||
|
||||
=head3 user_roles
|
||||
|
||||
Returns the user roles for this license
|
||||
|
||||
=cut
|
||||
|
||||
sub user_roles {
|
||||
my ( $self, $user_roles ) = @_;
|
||||
|
||||
if ( $user_roles ) {
|
||||
my $schema = $self->_result->result_source->schema;
|
||||
$schema->txn_do(
|
||||
sub {
|
||||
$self->user_roles->delete;
|
||||
|
||||
for my $user_role (@$user_roles) {
|
||||
$self->_result->add_to_erm_user_roles($user_role);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
my $user_roles_rs = $self->_result->erm_user_roles;
|
||||
return Koha::ERM::UserRoles->_new_from_dbic($user_roles_rs);
|
||||
}
|
||||
|
||||
=head3 documents
|
||||
|
||||
Returns or updates the documents for this license
|
||||
|
|
|
|||
|
|
@ -91,9 +91,11 @@ sub add {
|
|||
|
||||
my $body = $c->validation->param('body');
|
||||
|
||||
my $user_roles = delete $body->{user_roles} // [];
|
||||
my $documents = delete $body->{documents} // [];
|
||||
|
||||
my $license = Koha::ERM::License->new_from_api($body)->store;
|
||||
$license->user_roles($user_roles);
|
||||
$license->documents($documents);
|
||||
|
||||
$c->res->headers->location($c->req->url->to_string . '/' . $license->license_id);
|
||||
|
|
@ -172,9 +174,11 @@ sub update {
|
|||
|
||||
my $body = $c->validation->param('body');
|
||||
|
||||
my $user_roles = delete $body->{user_roles} // [];
|
||||
my $documents = delete $body->{documents} // [];
|
||||
|
||||
$license->set_from_api($body)->store;
|
||||
$license->user_roles($user_roles);
|
||||
$license->documents($documents);
|
||||
|
||||
$c->res->headers->location($c->req->url->to_string . '/' . $license->license_id);
|
||||
|
|
|
|||
|
|
@ -124,6 +124,11 @@
|
|||
</ol>
|
||||
</fieldset>
|
||||
</div>
|
||||
<UserRoles
|
||||
:user_type="$__('License user')"
|
||||
:user_roles="license.user_roles"
|
||||
:av_user_roles="av_user_roles"
|
||||
/>
|
||||
<Documents :documents="license.documents" />
|
||||
<fieldset class="action">
|
||||
<input type="submit" :value="$__('Submit')" />
|
||||
|
|
@ -142,6 +147,7 @@
|
|||
<script>
|
||||
import { inject } from "vue"
|
||||
import flatPickr from "vue-flatpickr-component"
|
||||
import UserRoles from "./UserRoles.vue"
|
||||
import Documents from "./Documents.vue"
|
||||
import { setMessage, setError, setWarning } from "../../messages"
|
||||
import { fetchLicense } from "../../fetch"
|
||||
|
|
@ -153,12 +159,14 @@ export default {
|
|||
const { vendors } = storeToRefs(vendorStore)
|
||||
|
||||
const AVStore = inject("AVStore")
|
||||
const { av_license_types, av_license_statuses } = storeToRefs(AVStore)
|
||||
const { av_license_types, av_license_statuses, av_user_roles } =
|
||||
storeToRefs(AVStore)
|
||||
|
||||
return {
|
||||
vendors,
|
||||
av_license_types,
|
||||
av_license_statuses,
|
||||
av_user_roles,
|
||||
max_allowed_packet,
|
||||
}
|
||||
},
|
||||
|
|
@ -174,6 +182,7 @@ export default {
|
|||
status: "",
|
||||
started_on: undefined,
|
||||
ended_on: undefined,
|
||||
user_roles: [],
|
||||
documents: [],
|
||||
},
|
||||
initialized: false,
|
||||
|
|
@ -239,6 +248,10 @@ export default {
|
|||
license.vendor_id = null
|
||||
}
|
||||
|
||||
license.user_roles = license.user_roles.map(
|
||||
({ patron, patron_str, ...keepAttrs }) => keepAttrs
|
||||
)
|
||||
|
||||
license.documents = license.documents.map(
|
||||
({ file_type, uploaded_on, ...keepAttrs }) => keepAttrs
|
||||
)
|
||||
|
|
@ -275,6 +288,7 @@ export default {
|
|||
},
|
||||
components: {
|
||||
flatPickr,
|
||||
UserRoles,
|
||||
Documents,
|
||||
},
|
||||
name: "LicensesFormAdd",
|
||||
|
|
|
|||
|
|
@ -66,6 +66,33 @@
|
|||
<label>{{ $__("Ended on") }}:</label>
|
||||
<span>{{ format_date(license.ended_on) }}</span>
|
||||
</li>
|
||||
<li v-if="license.user_roles.length">
|
||||
<label>{{ $__("Users") }}</label>
|
||||
<table>
|
||||
<thead>
|
||||
<th>{{ $__("Name") }}</th>
|
||||
<th>{{ $__("Role") }}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr
|
||||
v-for="(
|
||||
role, counter
|
||||
) in license.user_roles"
|
||||
v-bind:key="counter"
|
||||
>
|
||||
<td>{{ patron_to_html(role.patron) }}</td>
|
||||
<td>
|
||||
{{
|
||||
get_lib_from_av(
|
||||
"av_user_roles",
|
||||
role.role
|
||||
)
|
||||
}}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</li>
|
||||
<li v-if="license.documents.length">
|
||||
<label>{{ $__("Documents") }}</label>
|
||||
<div id="license_documents">
|
||||
|
|
@ -123,12 +150,14 @@ import { fetchLicense } from "../../fetch"
|
|||
export default {
|
||||
setup() {
|
||||
const format_date = $date
|
||||
const patron_to_html = $patron_to_html
|
||||
|
||||
const AVStore = inject("AVStore")
|
||||
const { get_lib_from_av } = AVStore
|
||||
|
||||
return {
|
||||
format_date,
|
||||
patron_to_html,
|
||||
get_lib_from_av,
|
||||
}
|
||||
},
|
||||
|
|
@ -142,6 +171,7 @@ export default {
|
|||
description: "",
|
||||
type: "",
|
||||
status: "",
|
||||
user_roles: [],
|
||||
started_on: undefined,
|
||||
ended_on: undefined,
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue