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:
Pedro Amorim 2022-10-28 22:15:10 +00:00 committed by Tomas Cohen Arazi
parent 03d23be15d
commit 4d9ed4b897
No known key found for this signature in database
GPG Key ID: 0A272EA1B2F3C15F
4 changed files with 75 additions and 1 deletions

View File

@ -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

View File

@ -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);

View File

@ -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",

View File

@ -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,
},