diff --git a/Controllers/TicketsController.cs b/Controllers/TicketsController.cs index 25fa0a9..4895621 100644 --- a/Controllers/TicketsController.cs +++ b/Controllers/TicketsController.cs @@ -92,7 +92,7 @@ namespace TicketManager.Controllers { if (!ModelState.IsValid) { - return BadRequest(); + return BadRequest(ModelState); } var ticket = new Ticket() diff --git a/README.md b/README.md index 7f0589e..a01d101 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ### v1 -- [Internal Link. Don't forget to update](https://localhost:5001/swagger) +- [Internal Link. Don't forget to update](https://localhost:5001/api/v1/) ## Features @@ -45,7 +45,8 @@ - [ ] logging - [ ] check useRef, useReducer, dispatch - [ ] error page redirect when offline. -- [ ] ticket/files/activities list placeholders when empty +- [x] ticket/files/activities list placeholders when empty - [ ] think about public/private DTO's constructor, getters and setters - [X] write dtos without circular dependencies. - [ ] use dtoRequest for PutProjects +- [ ] render avatarlist after UserModal Update diff --git a/Startup.cs b/Startup.cs index b1cf264..e358b50 100644 --- a/Startup.cs +++ b/Startup.cs @@ -90,7 +90,6 @@ namespace TicketManager app.UseDefaultFiles(); app.UseSwagger(); - app.UseSwaggerUI(c => { c.RoutePrefix = "api/v1"; diff --git a/client/src/VM/ProjectVM.ts b/client/src/VM/ProjectVM.ts index 2a974ce..87faecc 100644 --- a/client/src/VM/ProjectVM.ts +++ b/client/src/VM/ProjectVM.ts @@ -6,7 +6,7 @@ import { User } from "../types/User"; import { getRemainingdays } from "../utils/methods"; export default class ProjectVM { - public id: number; + // public id: number; public title: string; public description: string; public creationDate: string; @@ -24,7 +24,7 @@ export default class ProjectVM { public remainingDays: number; public constructor(project: Project, allUsers: User[]) { - this.id = project.id; + // this.id = project.id; this.title = project.title; this.description = project.description; this.creationDate = project.creationDate; diff --git a/client/src/VM/UserVM.ts b/client/src/VM/UserVM.ts index 821ee4f..175da9a 100644 --- a/client/src/VM/UserVM.ts +++ b/client/src/VM/UserVM.ts @@ -1,5 +1,19 @@ -export class UserVM { - public Id?: number; +import { Project } from "../types/Project"; +import { Ticket } from "../types/Ticket"; +import { User } from "../types/User"; - public constructor() {} +export class UserVM { + public fullName: string; + public presentation: string; + public picture: string; + public projects: Project[]; + public tickets: Ticket[]; + + public constructor(user: User) { + this.fullName = user.fullName; + this.presentation = user.presentation; + this.picture = user.picture; + this.projects = user.projects; + this.tickets = user.tickets; + } } diff --git a/client/src/components/ActivityCollection.tsx b/client/src/components/ActivityCollection.tsx index b37d8ac..c347cc2 100644 --- a/client/src/components/ActivityCollection.tsx +++ b/client/src/components/ActivityCollection.tsx @@ -12,38 +12,58 @@ export const ActivityCollection: FC = ({ activities, filterText }) => { ) : ( <> ); }; type IFProps = { - activity: Activity; + activity?: Activity; }; export const ActivityEntry: FC = ({ activity }) => { return ( <> - - {/* folder */} - - {activity.user.firstName} {activity.description} {activity.ticket.title} - -

{activity.date.toDateString()}

+
  • + {/* */} + folder + + {activity ? activity.user.firstName : "Ruidy"} + {activity ? activity.description : " welcomes you "} + {activity ? activity.ticket.title : "here"} + +

    + {activity ? activity.date.toDateString() : new Date().toDateString()} +

    +
  • ); }; diff --git a/client/src/components/Avatar.tsx b/client/src/components/Avatar.tsx new file mode 100644 index 0000000..37c45c4 --- /dev/null +++ b/client/src/components/Avatar.tsx @@ -0,0 +1,12 @@ +import React, { FC } from "react"; + +interface IProps { + picture: string; +} +export const Avatar: FC = ({ picture }) => { + return ( + <> + + + ); +}; diff --git a/client/src/components/FileCollection.tsx b/client/src/components/FileCollection.tsx index 114ae98..c709da9 100644 --- a/client/src/components/FileCollection.tsx +++ b/client/src/components/FileCollection.tsx @@ -7,35 +7,38 @@ type IProps = { }; export const FileCollection: FC = ({ files, filterText }) => { + console.log(); return ( <>
      - {files - .filter( - f => - f.name.toLowerCase().includes(filterText.toLowerCase()) || - f.format.toLowerCase().includes(filterText.toLowerCase()) - ) - .map((file: AppFile) => ( - - ))} + {files.length === 0 ? ( + + ) : ( + files + .filter( + f => + f.name.toLowerCase().includes(filterText.toLowerCase()) || + f.format.toLowerCase().includes(filterText.toLowerCase()) + ) + .map((file: AppFile) => ) + )}
    ); }; type IFProps = { - file: AppFile; + file?: AppFile; }; export const FileEntry: FC = ({ file }) => { return (
  • {/* */} - folder - {file.name} + folder + {file ? file.name : "Add your first file"}

    - {file.size}kb {file.format} + {file ? file.size : 0}kb {file ? file.format : "pdf"}

    more_vert diff --git a/client/src/components/HorizontalCard.tsx b/client/src/components/HorizontalCard.tsx index f9b7f2c..815804c 100644 --- a/client/src/components/HorizontalCard.tsx +++ b/client/src/components/HorizontalCard.tsx @@ -3,46 +3,58 @@ import { Link } from "react-router-dom"; import { getRemainingdays } from "../utils/methods"; interface IProps { - title: string; - remainingDays: string; - validateTicket: (event: MouseEvent) => void; - archiveTicket: (event: MouseEvent) => void; + title?: string; + remainingDays?: string; + validateTicket?: (event: MouseEvent) => void; + // archiveTicket: (event: MouseEvent) => void; } export const HorizontalCard: FC = ({ title, remainingDays, - archiveTicket, + // archiveTicket, validateTicket }) => { return ( -
    -
    -
    -
    -
    -
    +
  • +
    +
    +
    +
    +
    +
    + + {title ?? "Nothing to do"} + +
    +
    + + Due{" "} + {remainingDays ? ( + getRemainingdays(remainingDays) + ) : ( + + Too much 0 + + )}{" "} + days + +
    - {title} + + check + -
  • -
    - Due {getRemainingdays(remainingDays)} days -
    - - - check - - - + {/* archive - + */} +
    - +
  • ); }; diff --git a/client/src/components/InputFile.tsx b/client/src/components/InputFile.tsx index aa528e9..1f8c63f 100644 --- a/client/src/components/InputFile.tsx +++ b/client/src/components/InputFile.tsx @@ -7,7 +7,7 @@ export const InputFile: FC = () => { <>
    -
    +
    cloud_upload = ({ users }) => { + const [members, setMembers] = useState([]); + const [filterText, setFilterText] = useState(""); + const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => { + setFilterText(""); + }; + const handleChange: (e: ChangeEvent) => void = ( + e: ChangeEvent + ) => { + setFilterText(e.target.value); + }; + return ( + <> + +
      + {users.map((u: User) => ( +
    • + +
    • + ))} +
    + + ); +}; diff --git a/client/src/components/NewTicketForm.tsx b/client/src/components/NewTicketForm.tsx new file mode 100644 index 0000000..c105250 --- /dev/null +++ b/client/src/components/NewTicketForm.tsx @@ -0,0 +1,77 @@ +import React, { FC } from "react"; + +interface IProps { + title: string; + setTitle: React.Dispatch>; + description: string; + setDescription: React.Dispatch>; + endingDate: string; + setEndingDate: React.Dispatch>; +} + +export const NewTicketForm: FC = ({ + title, + setTitle, + description, + setDescription, + endingDate, + setEndingDate +}) => { + return ( + <> +
    +
    + note_add + ) => + setTitle(e.target.value) + } + /> + +
    + +
    + mode_edit + + +
    + +
    + date_range + ) => + setEndingDate(e.target.value) + } + /> + +
    + +
    + +
    +
    + + ); +}; diff --git a/client/src/components/NewTicketModal.tsx b/client/src/components/NewTicketModal.tsx new file mode 100644 index 0000000..b2ecb62 --- /dev/null +++ b/client/src/components/NewTicketModal.tsx @@ -0,0 +1,93 @@ +import React, { FC, useState, ChangeEvent, useEffect, FormEvent } from "react"; +import { useParams } from "react-router-dom"; +import { Modal } from "./Modal"; +import { NewTicketTabRouter } from "./NewTicketTabRouter"; +import { User } from "../types/User"; +import { Ticket } from "../types/Ticket"; +import { patch, post } from "../utils/http"; +import { Constants } from "../utils/Constants"; +import { Project } from "../types/Project"; +import { HttpResponse } from "../types/HttpResponse"; + +interface IProps { + show: boolean; + handleClose(): void; + allUsers: User[]; +} + +export const NewTicketModal: FC = ({ show, handleClose, allUsers }) => { + const [filterText, setFilterText] = useState(""); + const { id } = useParams(); + const [title, setTitle] = useState(""); + const [description, setDescription] = useState(""); + const [endingDate, setEndingDate] = useState(""); + + const handleChange: (e: ChangeEvent) => void = ( + e: ChangeEvent + ) => { + setFilterText(e.target.value); + }; + + const handleSubmit: (event: FormEvent) => void = async ( + e: FormEvent + ) => { + e.preventDefault(); + let newTicket = { + title: title, + description: description, + endingDate: endingDate, + creatorId: "20bf4b2a-7209-4826-96cd-29c2bc937a94", + projectId: 1 + }; + console.log(newTicket); + const response: HttpResponse = await post( + `${Constants.ticketsURI}`, + newTicket + ); + console.log(response.parsedBody); + handleClose(); + }; + + useEffect(() => {}); + return ( + +
    +
    +

    New Ticket

    +
    + +
    + + close + +
    +
    + + +
    + +
    + +
    + +
    + +
    + ); +}; diff --git a/client/src/components/NewTicketTabRouter.tsx b/client/src/components/NewTicketTabRouter.tsx new file mode 100644 index 0000000..2985d7a --- /dev/null +++ b/client/src/components/NewTicketTabRouter.tsx @@ -0,0 +1,55 @@ +import React, { FC } from "react"; +import { Route, useRouteMatch, Redirect } from "react-router-dom"; +import { TabRouterHeader } from "./TabRouterHeader"; +import { NewTicketForm } from "./NewTicketForm"; +import { MemberList } from "./MemberList"; +import { User } from "../types/User"; +import { Ticket } from "../types/Ticket"; + +interface IProps { + tabNames: string[]; + users: User[]; + description: string; + setDescription: React.Dispatch>; + title: string; + setTitle: React.Dispatch>; + endingDate: string; + setEndingDate: React.Dispatch>; +} + +export const NewTicketTabRouter: FC = ({ + tabNames, + users, + description, + setDescription, + title, + setTitle, + endingDate, + setEndingDate +}) => { + const { url } = useRouteMatch(); + return ( + <> +
    + + + + + + + + + + + +
    + + ); +}; diff --git a/client/src/components/ProgressBar.tsx b/client/src/components/ProgressBar.tsx index 1095cc9..e6444f5 100644 --- a/client/src/components/ProgressBar.tsx +++ b/client/src/components/ProgressBar.tsx @@ -16,11 +16,12 @@ export const ProgressBar: FC = ({ remainingDays }) => { const styleString: CSSProperties = { width: `${value}%` }; + const barColor: string = value < 75 ? "red" : ""; return ( <>
    -
    +
    playlist_add_check diff --git a/client/src/components/ProjectList.tsx b/client/src/components/ProjectList.tsx new file mode 100644 index 0000000..85d1460 --- /dev/null +++ b/client/src/components/ProjectList.tsx @@ -0,0 +1,78 @@ +import React, { FC, useState, ChangeEvent, MouseEvent } from "react"; +import { Ticket } from "../types/Ticket"; +import { FloatingButton } from "./FloatingButton"; +import { HorizontalCard } from "./HorizontalCard"; +import { FilterBar } from "./FilterBar"; +import { put } from "../utils/http"; +import { Constants } from "../utils/Constants"; +import { HttpResponse } from "../types/HttpResponse"; +import { Project } from "../types/Project"; + +type IProps = { + projects: Project[]; +}; + +export const ProjectList: FC = ({ projects }) => { + const [filterText, setFilterText] = useState(""); + const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => { + setFilterText(""); + }; + // const archiveTicket = () => {}; + + const onClick: (e: MouseEvent) => void = (e: MouseEvent) => { + e.preventDefault(); + setShowNew(true); + }; + const handleChange: (e: ChangeEvent) => void = ( + e: ChangeEvent + ) => { + setFilterText(e.target.value); + }; + + const [showNew, setShowNew] = useState(false); + let filteredTickets = projects.filter( + t => + t.status !== "Done" && + t.title.toLowerCase().includes(filterText.toLowerCase()) + ); + return ( + <> +
    +

    Projects

    + + +
    +
    +
      + {filteredTickets.length === 0 ? ( + + ) : ( + filteredTickets.map((t: Project) => ( + { + e.preventDefault(); + await put>( + `${Constants.ticketsURI}/${t.id}/closed`, + {} + ); + }} + // archiveTicket={archiveTicket} + /> + )) + )} +
    +
    + + ); +}; diff --git a/client/src/components/TabRouter.tsx b/client/src/components/TabRouter.tsx index 3b3915e..0938467 100644 --- a/client/src/components/TabRouter.tsx +++ b/client/src/components/TabRouter.tsx @@ -1,12 +1,13 @@ import React, { FC } from "react"; +import { Route, useRouteMatch, Redirect } from "react-router-dom"; import { TabRouterHeader } from "./TabRouterHeader"; import { TicketList } from "./TicketList"; import { FileList } from "./AppFileList"; +import { ActivityList } from "./ActivityList"; import { Ticket } from "../types/Ticket"; import { AppFile } from "../types/AppFile"; -import { Route, useRouteMatch, Redirect } from "react-router-dom"; -import { ActivityList } from "./ActivityList"; import { Activity } from "../types/Activity"; +import { User } from "../types/User"; interface IProps { tickets: Ticket[]; @@ -14,15 +15,18 @@ interface IProps { tabNames: string[]; files: AppFile[]; activities: Activity[]; + allUsers: User[]; } export const TabRouter: FC = ({ tickets, tabNames, files, - activities + activities, + allUsers }) => { const { url } = useRouteMatch(); + return ( <>
    @@ -31,7 +35,7 @@ export const TabRouter: FC = ({ - + diff --git a/client/src/components/TabRouterHeader.tsx b/client/src/components/TabRouterHeader.tsx index 5a95261..2bd15ef 100644 --- a/client/src/components/TabRouterHeader.tsx +++ b/client/src/components/TabRouterHeader.tsx @@ -7,14 +7,15 @@ interface IProps { } export const TabRouterHeader: FC = ({ - tabClass = "tab col s4", - tabNames + tabNames, + tabClass = `tab col s${12 / tabNames.length}` }) => { const [isActive, setIsActive] = useState(0); const nTabs = tabNames.length; + return ( <> -
      +
        {tabNames.map((name, i) => ( = ({ /> ))}
      • = ({ setIsActive(parseInt(value))} > {text} diff --git a/client/src/components/TicketList.tsx b/client/src/components/TicketList.tsx index d1be3c3..e07c674 100644 --- a/client/src/components/TicketList.tsx +++ b/client/src/components/TicketList.tsx @@ -3,20 +3,27 @@ import { Ticket } from "../types/Ticket"; import { FloatingButton } from "./FloatingButton"; import { HorizontalCard } from "./HorizontalCard"; import { FilterBar } from "./FilterBar"; +import { User } from "../types/User"; +import { HttpResponse } from "../types/HttpResponse"; +import { put } from "../utils/http"; +import { Constants } from "../utils/Constants"; +import { NewTicketModal } from "./NewTicketModal"; type TicketListProps = { tickets: Ticket[]; + users: User[]; }; -export const TicketList: FC = ({ tickets }) => { +export const TicketList: FC = ({ tickets, users }) => { const [filterText, setFilterText] = useState(""); const clearFilterText: (e: MouseEvent) => void = (e: MouseEvent) => { setFilterText(""); }; - const archiveTicket = () => {}; - const validateTicket = () => {}; + // const archiveTicket = () => {}; + const onClick: (e: MouseEvent) => void = (e: MouseEvent) => { e.preventDefault(); + setShowNew(true); }; const handleChange: (e: ChangeEvent) => void = ( e: ChangeEvent @@ -24,12 +31,25 @@ export const TicketList: FC = ({ tickets }) => { setFilterText(e.target.value); }; + const [showNew, setShowNew] = useState(false); + let filteredTickets = tickets.filter( + t => + t.status !== "Done" && + t.title.toLowerCase().includes(filterText.toLowerCase()) + ); return ( <>
        + { + setShowNew(false); + }} + show={showNew} + allUsers={users} + />

        Tickets

        @@ -41,20 +61,25 @@ export const TicketList: FC = ({ tickets }) => {
          - {tickets - .filter(t => - t.title.toLowerCase().includes(filterText.toLowerCase()) - ) - .map((t: Ticket) => ( -
        • - -
        • - ))} + {filteredTickets.length === 0 ? ( + + ) : ( + filteredTickets.map((t: Ticket) => ( + { + e.preventDefault(); + await put>( + `${Constants.ticketsURI}/${t.id}/closed`, + {} + ); + }} + // archiveTicket={archiveTicket} + /> + )) + )}
        diff --git a/client/src/components/UserHeader.tsx b/client/src/components/UserHeader.tsx new file mode 100644 index 0000000..3242e63 --- /dev/null +++ b/client/src/components/UserHeader.tsx @@ -0,0 +1,21 @@ +import React, { FC } from "react"; +import { Header } from "../components/Header"; +import { Avatar } from "../components/Avatar"; + +interface IProps { + fullName: string; + presentation: string; + picture: string; +} +export const UserHeader: FC = ({ fullName, presentation, picture }) => { + return ( +
        +
        + +
        +
        +
        +
        +
        + ); +}; diff --git a/client/src/components/UserTabRouter.tsx b/client/src/components/UserTabRouter.tsx new file mode 100644 index 0000000..7ee89ae --- /dev/null +++ b/client/src/components/UserTabRouter.tsx @@ -0,0 +1,34 @@ +import React, { FC } from "react"; +import { Route, useRouteMatch, Redirect } from "react-router-dom"; +import { TabRouterHeader } from "./TabRouterHeader"; +import { ProjectList } from "./ProjectList"; +import { Ticket } from "../types/Ticket"; +import { Project } from "../types/Project"; + +interface IProps { + tabNames: string[]; + tickets: Ticket[]; + projects: Project[]; +} + +export const UserTabRouter: FC = ({ tickets, tabNames, projects }) => { + const { url } = useRouteMatch(); + + return ( + <> +
        + + + + + + + + + {/* + + */} +
        + + ); +}; diff --git a/client/src/components/UsersModal.tsx b/client/src/components/UsersModal.tsx index 03aaa33..9afcca1 100644 --- a/client/src/components/UsersModal.tsx +++ b/client/src/components/UsersModal.tsx @@ -35,22 +35,22 @@ export const UsersModal: FC = ({ e: FormEvent ) => { e.preventDefault(); - await patch( `${Constants.projectsURI}/${id}/members`, members.map(m => m.id) ); + handleClose(); }; return ( -
        +

        Manage users

        close @@ -78,10 +78,10 @@ export const UsersModal: FC = ({
      • ))}
      -
      +
      diff --git a/client/src/components/UsersModalEntry.tsx b/client/src/components/UsersModalEntry.tsx index 9dc0b12..e35501f 100644 --- a/client/src/components/UsersModalEntry.tsx +++ b/client/src/components/UsersModalEntry.tsx @@ -8,7 +8,6 @@ interface IProps { } export const UsersModalEntry: FC = ({ user, setMembers, members }) => { - // console.log(members); const match: (id: string) => boolean = (id: string) => { return Boolean(members.find(m => m.id === id)); }; diff --git a/client/src/controllers/UserController.tsx b/client/src/controllers/UserController.tsx index a023b5e..afc337b 100644 --- a/client/src/controllers/UserController.tsx +++ b/client/src/controllers/UserController.tsx @@ -1,6 +1,90 @@ -import React, { FC } from "react"; +import React, { FC, useState, useEffect } from "react"; import { UserPage } from "../pages/UserPage"; +import { UserVM } from "../VM/UserVM"; +import { User } from "../types/User"; +import { AppFile } from "../types/AppFile"; +import { Activity } from "../types/Activity"; +import { Ticket } from "../types/Ticket"; +import { Preloader } from "../components/Preloader"; export const UserController: FC = () => { - return ; + const [isLoading, setIsLoading] = useState(true); + + const user: User = { + id: "resldsm,dgd", + firstName: "David", + lastName: "Whittaker", + fullName: "David Whittaker", + presentation: "Interface designer and front-end developer", + creationDate: new Date().toDateString(), + email: "dw@mail.au", + phone: "0998765432", + picture: require("../images/user_1.jpg"), + projects: [ + { + id: 1, + title: "Project Title", + description: "What is it about", + progression: 25, + creationDate: new Date().toDateString(), + endingDate: "2020-02-17 15:51:02.787373", + status: "Todo", + manager: {} as User, + users: [] as User[], + tickets: [] as Ticket[], + files: [] as AppFile[], + activities: [] as Activity[] + } + ], + tickets: [ + { + id: 1, + title: "Client objective meeting", + description: "Client objective meeting", + endingDate: "2020-02-17 15:51:02.787373", + status: "Done", + project: { + id: 1, + title: "Project Title", + description: "What is it about", + progression: 25, + creationDate: new Date().toDateString(), + endingDate: "2020-02-17 15:51:02.787373", + status: "Todo", + manager: {} as User, + users: [] as User[], + tickets: [] as Ticket[], + files: [] as AppFile[], + activities: [] as Activity[] + } + }, + { + id: 2, + title: "Assemble Outcomes Report for client", + description: "Assemble Outcomes Report for client", + endingDate: "2020-02-27 15:51:02.787373", + status: "To Do", + project: { + id: 1, + title: "Project Title", + description: "What is it about", + progression: 25, + creationDate: new Date().toDateString(), + endingDate: "2020-02-17 15:51:02.787373", + status: "Todo", + manager: {} as User, + users: [] as User[], + tickets: [] as Ticket[], + files: [] as AppFile[], + activities: [] as Activity[] + } + } + ], + activities: [] + }; + useEffect(() => { + setTimeout(() => setIsLoading(false), 1000); + }); + const viewModel = new UserVM(user); + return isLoading ? : ; }; diff --git a/client/src/pages/ProjectPage.tsx b/client/src/pages/ProjectPage.tsx index f7680d8..16ac841 100644 --- a/client/src/pages/ProjectPage.tsx +++ b/client/src/pages/ProjectPage.tsx @@ -37,7 +37,7 @@ export const ProjectPage: FC = ({ viewModel }) => { setShowModal(true)} /> @@ -59,6 +59,7 @@ export const ProjectPage: FC = ({ viewModel }) => { tickets={tickets} files={files} activities={activities} + allUsers={allUsers} />
    diff --git a/client/src/pages/UserPage.tsx b/client/src/pages/UserPage.tsx index a2a1ad0..6641aad 100644 --- a/client/src/pages/UserPage.tsx +++ b/client/src/pages/UserPage.tsx @@ -1,12 +1,32 @@ import React, { FC } from "react"; -import { Header } from "../components/Header"; +import { UserVM } from "../VM/UserVM"; +import { UserHeader } from "../components/UserHeader"; +import { UserTabRouter } from "../components/UserTabRouter"; -export const UserPage: FC = () => { +interface IProps { + viewModel: UserVM; +} +export const UserPage: FC = ({ viewModel }) => { + const { fullName, presentation, picture, projects, tickets } = viewModel; + const tabNames: string[] = ["Projects", "Tickets"]; return ( -
    - // +
    +
    + + +
    + {/* // // // - // + // */} +
    ); }; diff --git a/client/src/types/Ticket.ts b/client/src/types/Ticket.ts index 7d675b1..be6cac3 100644 --- a/client/src/types/Ticket.ts +++ b/client/src/types/Ticket.ts @@ -1,7 +1,10 @@ +import { Project } from "./Project"; + export interface Ticket { id: number; title: string; description: string; status: string; - plannedEnding: string; + endingDate: string; + project: Project; } diff --git a/client/src/types/User.ts b/client/src/types/User.ts index 94b6732..7cdfb58 100644 --- a/client/src/types/User.ts +++ b/client/src/types/User.ts @@ -10,7 +10,7 @@ export interface User { presentation: string; email: string; phone: string; - createdAt: string; + creationDate: string; picture: string; activities: Activity[]; projects: Project[]; diff --git a/client/src/utils/router.tsx b/client/src/utils/router.tsx index d9f7347..8d99a96 100644 --- a/client/src/utils/router.tsx +++ b/client/src/utils/router.tsx @@ -12,7 +12,7 @@ import * as creacteHistory from "history"; import { ProjectController } from "../controllers/ProjectController"; import { NotFoundPage } from "../pages/NotFoundPage"; import { TestPage } from "../pages/TestPage"; -// import { UserController } from "../controllers/UserController"; +import { UserController } from "../controllers/UserController"; // import { TicketController } from "../controllers/TicketController"; export const history = creacteHistory.createBrowserHistory(); @@ -20,7 +20,7 @@ export const history = creacteHistory.createBrowserHistory(); export const AppRouter = () => { return ( -
    +
    @@ -28,24 +28,20 @@ export const AppRouter = () => { {/* - + */} - */} + {/* - */} + */} - - {/* - - */}