Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -109,21 +109,38 @@ public class ProfessionalHomeController {
/**
* Mostra a tela da minha conta no perfil do profissional, mostrando os anúncios disponíveis por default.
* @param expertiseId
* @param request
* @param id
* @param page
* @param size
* @param order
* @param direction
* @return
* @throws Exception
*/
@GetMapping
@RolesAllowed({RoleType.USER})
public ModelAndView showMyAccountProfessional(@RequestParam(required = false, defaultValue = "0") Optional<Long> expertiseId) throws Exception {
public ModelAndView showMyAccountProfessional(
HttpServletRequest request,
@RequestParam(required = false, defaultValue = "0") Optional<Long> expertiseId,
@RequestParam(required = false, defaultValue = "0") Long id,
@RequestParam(value = "pag", defaultValue = "1") int page,
@RequestParam(value = "siz", defaultValue = "5") int size,
@RequestParam(value = "ord", defaultValue = "id") String order,
@RequestParam(value = "dir", defaultValue = "ASC") String direction
) throws Exception {
log.debug("ServiceBook: Minha conta.");

Optional<Individual> oProfessional = (individualService.findByEmail(authentication.getEmail()));
if (!oProfessional.isPresent()) {
throw new Exception("Usuário não autenticado! Por favor, realize sua autenticação no sistema.");
}

ModelAndView mv = new ModelAndView("professional/my-account");

Page<JobRequest> jobRequestPage = findJobRequests(id, JobRequest.Status.AVAILABLE, page, size);
List<JobRequestFullDTO> jobRequestFullDTOs = generateJobRequestDTOList(jobRequestPage);
PaginationDTO paginationDTO = paginationUtil.getPaginationDTO(jobRequestPage, "/minha-conta/profissional");
ModelAndView mv = new ModelAndView("professional/initial");

List<ProfessionalExpertise> professionalExpertises = professionalExpertiseService.findByProfessional(oProfessional.get());
List<ExpertiseDTO> professionalExpertiseDTOs = professionalExpertises.stream()
.map(professionalExpertise -> professionalExpertise.getExpertise())
Expand All @@ -150,6 +167,8 @@ public ModelAndView showMyAccountProfessional(@RequestParam(required = false, de
mv.addObject("professionalExpertises", professionalExpertiseDTOs);
mv.addObject("userInfo", individualInfo);
mv.addObject("statisticInfo", statisticInfo);
mv.addObject("pagination", paginationDTO);
mv.addObject("jobs", jobRequestFullDTOs);

return mv;
}
Expand Down
168 changes: 168 additions & 0 deletions src/main/webapp/WEB-INF/view/professional/initial.jsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<t:template title="ServiceBook - Minha conta" userInfo="${userInfo}">
<jsp:body>
<main class="container">
<div class="row">
<t:side-panel userInfo="${userInfo}" followdto="${followdto}" statisticInfo="${statisticInfo}"></t:side-panel>
<div class="col m10 offset-m1 l9">
<a id="show-area-perfil"
class="hide-on-large-only show-area-perfil waves-effect waves-light btn btn-floating grey darken-3 z-depth-A">
<i class="material-icons">compare_arrows</i>
</a>
<div class="row">
<div class="col s12">
<h2 class="secondary-color-text">Serviços Disponíveis</h2>
</div>
<div class="col s12">
<c:if test="${empty jobs}">
<div class="container">
<div class="row">
<div class="col s12 spacing-buttons">
<div class="none-profission">
<p class="center text-form-dados">Nenhum pedido encontrado!</p>
<p class="center">
Um novo pedido pode chegar aqui a qualquer momento.
</p>
</div>
</div>
</div>
</div>
</c:if>

<c:forEach var="job" items="${jobs}">
<c:if test="${not empty job.id}">
<div class="container">
<div class="row">
<div class="col s12 spacing-buttons">
<div style="border: solid 1px black">
<div class="secondary-background-color">
<div class="row">
<div class="col s8 offset-s2">
<h5 class="center white-text">${job.expertise.name}</h5>
</div>
<div class="col s2">
<h5 class="right white-text badge-service">
${job.totalCandidates}/${job.quantityCandidatorsMax}
</h5>
</div>
</div>
</div>
<div class="row">
<div class="col s4">
<p class="center text-form-dados primary-color-text">
<i class="material-icons small dark-color-text">person</i>
</p>
<p class="center text-form-dados primary-color-text">
${job.individual.name}
</p>
</div>
<div class="col s4">
<p
class="center center-align text-form-dados primary-color-text"
>
<i class="material-icons small dark-color-text"
>location_on</i
>
</p>
<p class="center text-form-dados primary-color-text">
${job.individual.address.neighborhood},
${job.individual.address.city.name}/${job.individual.address.city.state.uf}
</p>
</div>
<div class="col s4">
<p class="center text-form-dados primary-color-text">
<i class="material-icons small dark-color-text"
>access_time</i
>
</p>
<p class="center text-form-dados primary-color-text">
${job.textualDate}
</p>
</div>
</div>
<blockquote class="light-blue lighten-5 info-headers">
<p>${job.description}</p>
</blockquote>
<div class="col s6 m6 spacing-buttons">
<div class="center">
<a
href="#modal-delete"
data-url="${pageContext.request.contextPath}/requisicoes/nao-quero/${job.id}"
class="waves-effect waves-light btn spacing-buttons red modal-trigger"
>Não quero</a
>
</div>
</div>
<div>
<div class="center">
<a
href="minha-conta/profissional/detalhes-servico/${job.id}"
class="waves-effect waves-light btn spacing-buttons"
>
Detalhes
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="modal-delete" class="modal">
<div class="modal-content">
<form action="" method="post">
<div class="modal-content">
<h4>
Você tem certeza que deseja não se candidatar para este serviço?
<strong id="strong-name"></strong>?
</h4>
</div>
<div class="modal-footer">
<button
type="button"
class="modal-close btn-flat waves-effect waves-light btn btn-gray"
>
Cancelar
</button>
<button
type="submit"
class="modal-close btn waves-effect waves-light gray"
>
Sim
</button>
</div>
</form>
</div>
</div>
</c:if>
</c:forEach>

<div class="container col s12 center-align">
<t:pagination-tab-ajax pagination="${pagination}"></t:pagination-tab-ajax>
</div>
</div>
</div>
</div>
</div>
</main>

</jsp:body>
</t:template>

<script>
$(document).ready(function () {
$(".modal").modal({
onOpenEnd: function (modal, trigger) {
var url = $(trigger).data("url");
var name = $(trigger).data("name");

modal = $(modal);
var form = modal.find("form");
form.attr("action", url);
modal.find("#strong-name").text(name);
},
});
});
</script>