');
+ $div.append($('#modal-fragment').html());
+ $div.find('.modal-body p').text(message);
+ $('body').append($div);
+ $div.find('.modal').modal('show').on('hidden.bs.modal', function () {
+ $div.remove();
+ });
+ $div.find('.modal').find('.btn-primary').click(function(e) {
+ e.preventDefault();
+ f();
+ $div.find('.modal').modal('hide');
+ });
+}
+
+/**
+ *
+ * @param {type} displayOnly
+ * @param {type} size
+ */
+function doCreateRatings(displayOnly, size) {
+ $('input.rating-loading').rating({
+ displayOnly: displayOnly,
+ size: size,
+ step: displayOnly ? 0.5 : 1,
+ emptyStar: '
',
+ filledStar: '
',
+ showClear: false,
+ showCaption: false
+ });
+}
+
+/**
+ *
+ */
+function doConfigureFormValidation() {
+ $.validate({
+ modules: 'security',
+ validateOnBlur: false,
+ onElementValidate: function (valid, $el) {
+ if (valid) {
+ $($el.data('validation-error-msg-container')).closest('.form-group').addClass('d-none');
+ } else {
+ $($el.data('validation-error-msg-container')).closest('.form-group').removeClass('d-none');
+ }
+ }
+ });
+}
+
+/**
+ *
+ */
+function doConfigureInputMasking() {
+ $('[data-inputmask]').inputmask();
+}
\ No newline at end of file
diff --git a/src/main/resources/static/Styles.css b/src/main/resources/static/Styles.css
new file mode 100644
index 0000000..11e7268
--- /dev/null
+++ b/src/main/resources/static/Styles.css
@@ -0,0 +1,192 @@
+@font-face {
+ font-family: 'Raleway';
+ font-style: normal;
+ font-weight: 400;
+ src: url('/fonts/raleway-v12-latin-regular.eot'); /* IE9 Compat Modes */
+ src: local('Raleway'), local('Raleway-Regular'),
+ url('/fonts/raleway-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+ url('/fonts/raleway-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('/fonts/raleway-v12-latin-regular.woff') format('woff'), /* Modern Browsers */
+ url('/fonts/raleway-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('/fonts/raleway-v12-latin-regular.svg#Raleway') format('svg'); /* Legacy iOS */
+}
+
+.ui-helper-margin-top {
+ margin-top: 10px;
+}
+
+.ui-helper-margin-bottom {
+ margin-bottom: 10px;
+}
+
+.ui-helper-margin-top-decrease {
+ margin-top: -10px;
+}
+
+.ui-helper-margin-bottom-decrease {
+ margin-bottom: -10px;
+}
+
+body {
+ font-family: 'Raleway', Verdana;
+ font-size: 14px;
+ padding-top: 90px;
+ padding-bottom: 75px;
+}
+
+.navbar-brand {
+ font-size: 16px;
+}
+
+@media (max-width: 768px) {
+ .truncate {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
+ label {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ }
+}
+
+@media (max-width: 1200px) {
+ .desktop-only {
+ display: none;
+ }
+}
+
+@media (max-width: 992px) {
+}
+
+body .navbar {
+ font-size: 16px;
+}
+
+.nav-item .text-muted {
+ display: inline-block;
+ padding-top: 24px;
+ margin-right: 25px;
+ line-height: inherit;
+ white-space: nowrap;
+}
+
+.nav-item .text-muted img {
+ margin-top: -7px;
+}
+
+.nav-item .text-muted svg {
+ margin-top: -7px;
+}
+
+::-webkit-input-placeholder {
+ font-family: 'Raleway', Verdana;
+ font-size: 14px;
+}
+
+::-moz-placeholder {
+ font-family: 'Raleway', Verdana;
+ font-size: 14px;
+} /* firefox 19+ */
+
+:-ms-input-placeholder {
+ font-family: 'Raleway', Verdana;
+ font-size: 14px;
+} /* ie */
+
+
+input:-moz-placeholder {
+ font-family: 'Raleway', Verdana;
+ font-size: 14px;
+}
+
+.navbar-collapse {
+ text-align: center;
+}
+
+.footer {
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ height: 60px;
+ line-height: 60px;
+ z-index: 500;
+}
+
+body > .container {
+ padding-top: 20px;
+ padding-bottom: 20px;
+ margin: auto;
+ text-align: center;
+ align-items: center;
+}
+
+.col-padding {
+ padding-left: 30px;
+ padding-right: 30px;
+}
+
+.home .card {
+ margin: 0 auto;
+ float: none;
+ margin-bottom: 10px;
+ min-height: calc(50vh - 120px);
+ max-height: calc(50vh - 120px);
+ overflow: hidden;
+}
+
+.vh-100 {
+ height: calc(100vh - 190px);
+}
+
+.home .card > a {
+ cursor: pointer;
+ padding-top: 10px;
+ text-decoration: none;
+}
+
+.home .card:hover {
+ box-shadow: 0 4px 12px 0 rgba(0,0,0,0.2);
+}
+
+.form-group > label {
+ font-weight: bold;
+}
+
+.form-title {
+ margin-bottom: 10px;
+}
+
+.input-label-middle {
+ padding-top: 10px;
+}
+
+.input-label-middle-rating {
+ padding-top: 25px;
+}
+
+.star > svg {
+ cursor: pointer;
+}
+
+table.dataTable {
+ border-collapse: collapse !important;
+}
+
+.rating-stars, .star {
+ cursor: default !important;
+}
+.filter-label {
+ margin-top: 8px;
+}
+
+.form-check-label {
+ cursor: pointer;
+ margin-left: 20px;
+}
+
+.form-check-label input {
+ cursor: pointer;
+}
+
diff --git a/src/main/resources/static/fonts/raleway-v12-latin-regular.eot b/src/main/resources/static/fonts/raleway-v12-latin-regular.eot
new file mode 100644
index 0000000..dc8a2ba
Binary files /dev/null and b/src/main/resources/static/fonts/raleway-v12-latin-regular.eot differ
diff --git a/src/main/resources/static/fonts/raleway-v12-latin-regular.svg b/src/main/resources/static/fonts/raleway-v12-latin-regular.svg
new file mode 100644
index 0000000..3587070
--- /dev/null
+++ b/src/main/resources/static/fonts/raleway-v12-latin-regular.svg
@@ -0,0 +1,347 @@
+
+
+
diff --git a/src/main/resources/static/fonts/raleway-v12-latin-regular.ttf b/src/main/resources/static/fonts/raleway-v12-latin-regular.ttf
new file mode 100644
index 0000000..8392a78
Binary files /dev/null and b/src/main/resources/static/fonts/raleway-v12-latin-regular.ttf differ
diff --git a/src/main/resources/static/fonts/raleway-v12-latin-regular.woff b/src/main/resources/static/fonts/raleway-v12-latin-regular.woff
new file mode 100644
index 0000000..af2f2b7
Binary files /dev/null and b/src/main/resources/static/fonts/raleway-v12-latin-regular.woff differ
diff --git a/src/main/resources/static/fonts/raleway-v12-latin-regular.woff2 b/src/main/resources/static/fonts/raleway-v12-latin-regular.woff2
new file mode 100644
index 0000000..eba29a9
Binary files /dev/null and b/src/main/resources/static/fonts/raleway-v12-latin-regular.woff2 differ
diff --git a/src/main/resources/tables.sql b/src/main/resources/tables.sql
new file mode 100644
index 0000000..607a2ac
--- /dev/null
+++ b/src/main/resources/tables.sql
@@ -0,0 +1,129 @@
+alter table comments
+ drop constraint FK6uv0qku8gsu6x1r2jkrtqwjtn;
+
+alter table comments
+ drop constraint FK8omq0tc18jd43bu5tjh6jvraq;
+
+alter table order_lines
+ drop constraint FK1smc0s578t2oih21yn9hw6usr;
+
+alter table order_lines
+ drop constraint FK5v1oeejtgtf2n3toppm3tkuhh;
+
+alter table orders
+ drop constraint FK32ql8ubntj5uh44ph9659tiih;
+
+alter table products
+ drop constraint FKtng6hvelpjyy7el0f5eq93nq4;
+
+drop table categories;
+drop table comments;
+drop table order_lines;
+drop table orders;
+drop table products;
+drop table users;
+
+create table categories (
+ category_id bigint not null,
+ description varchar(255) not null,
+ highlighted boolean,
+ icon varchar(255) not null,
+ name varchar(255) not null,
+ primary key (category_id)
+);
+
+create table comments (
+ comment_id bigint generated by default as identity,
+ rating integer not null,
+ text varchar(255) not null,
+ timestamp bigint not null,
+ product_id bigint not null,
+ user_id bigint not null,
+ primary key (comment_id)
+);
+
+create table order_lines (
+ order_line_id bigint generated by default as identity,
+ price integer,
+ order_id bigint not null,
+ product_id bigint not null,
+ primary key (order_line_id)
+);
+
+create table orders (
+ order_id bigint generated by default as identity,
+ address varchar(255) not null,
+ name varchar(255) not null,
+ price integer not null,
+ state varchar(255) not null,
+ timestamp bigint not null,
+ user_id bigint not null,
+ primary key (order_id)
+);
+
+create table products (
+ product_id bigint not null,
+ description varchar(255) not null,
+ icon varchar(255) not null,
+ name varchar(255) not null,
+ price integer not null,
+ sales integer not null,
+ total_comments integer not null,
+ total_score integer not null,
+ category bigint not null,
+ primary key (product_id)
+);
+
+create table users (
+ user_id bigint generated by default as identity,
+ address varchar(255) not null,
+ card varchar(255),
+ cvv integer,
+ expiration_month integer,
+ expiration_year integer,
+ email varchar(255) not null,
+ image varchar(255),
+ name varchar(255) not null,
+ password varchar(255) not null,
+ reset_password_token varchar(255),
+ primary key (user_id)
+);
+
+alter table categories
+ add constraint UK_t8o6pivur7nn124jehx7cygw5 unique (name);
+
+alter table products
+ add constraint UK_o61fmio5yukmmiqgnxf8pnavn unique (name);
+
+alter table users
+ add constraint UK_6dotkott2kjsp8vw4d0m25fb7 unique (email);
+
+alter table comments
+ add constraint FK6uv0qku8gsu6x1r2jkrtqwjtn
+ foreign key (product_id)
+ references products;
+
+alter table comments
+ add constraint FK8omq0tc18jd43bu5tjh6jvraq
+ foreign key (user_id)
+ references users;
+
+alter table order_lines
+ add constraint FK1smc0s578t2oih21yn9hw6usr
+ foreign key (order_id)
+ references orders;
+
+alter table order_lines
+ add constraint FK5v1oeejtgtf2n3toppm3tkuhh
+ foreign key (product_id)
+ references products;
+
+alter table orders
+ add constraint FK32ql8ubntj5uh44ph9659tiih
+ foreign key (user_id)
+ references users;
+
+alter table products
+ add constraint FKtng6hvelpjyy7el0f5eq93nq4
+ foreign key (category)
+ references categories;
\ No newline at end of file
diff --git a/src/main/resources/templates/Cart.html b/src/main/resources/templates/Cart.html
new file mode 100644
index 0000000..9e85361
--- /dev/null
+++ b/src/main/resources/templates/Cart.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/templates/ChangePassword.html b/src/main/resources/templates/ChangePassword.html
new file mode 100644
index 0000000..1ab76f0
--- /dev/null
+++ b/src/main/resources/templates/ChangePassword.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+