From 299aa37bb1d398c19899fe5e6588eb767ec5c7dd Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Mon, 2 Mar 2020 11:01:29 +0100 Subject: [PATCH] NewTicketSubmit in progress --- Controllers/TicketsController.cs | 2 +- README.md | 2 +- Startup.cs | 1 + client/src/components/NewTicketForm.tsx | 42 ++++++++++++++++++-- client/src/components/NewTicketModal.tsx | 31 ++++++++++++--- client/src/components/NewTicketTabRouter.tsx | 27 ++++++++++++- client/src/components/ProjectList.tsx | 2 +- client/src/controllers/UserController.tsx | 32 ++++++++++++++- client/src/types/Ticket.ts | 3 ++ 9 files changed, 126 insertions(+), 16 deletions(-) diff --git a/Controllers/TicketsController.cs b/Controllers/TicketsController.cs index e298a37..7ee7035 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 74ce83e..0eb16a8 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 diff --git a/Startup.cs b/Startup.cs index a836e45..0d096d2 100644 --- a/Startup.cs +++ b/Startup.cs @@ -99,6 +99,7 @@ namespace TicketManager app.UseSwagger(); app.UseSwaggerUI(c => { + c.RoutePrefix = "api/v1"; c.SwaggerEndpoint("/swagger/v1/swagger.json", "Ticket Manager API v1"); c.DefaultModelsExpandDepth(-1); }); diff --git a/client/src/components/NewTicketForm.tsx b/client/src/components/NewTicketForm.tsx index 34e9918..c105250 100644 --- a/client/src/components/NewTicketForm.tsx +++ b/client/src/components/NewTicketForm.tsx @@ -1,14 +1,36 @@ import React, { FC } from "react"; -interface IProps {} +interface IProps { + title: string; + setTitle: React.Dispatch>; + description: string; + setDescription: React.Dispatch>; + endingDate: string; + setEndingDate: React.Dispatch>; +} -export const NewTicketForm: FC = () => { +export const NewTicketForm: FC = ({ + title, + setTitle, + description, + setDescription, + endingDate, + setEndingDate +}) => { return ( <>
note_add - + ) => + setTitle(e.target.value) + } + />
@@ -17,13 +39,25 @@ export const NewTicketForm: FC = () => {
date_range - + ) => + setEndingDate(e.target.value) + } + />
diff --git a/client/src/components/NewTicketModal.tsx b/client/src/components/NewTicketModal.tsx index 615385a..c130c4c 100644 --- a/client/src/components/NewTicketModal.tsx +++ b/client/src/components/NewTicketModal.tsx @@ -3,8 +3,11 @@ import { useParams } from "react-router-dom"; import { Modal } from "./Modal"; import { NewTicketTabRouter } from "./NewTicketTabRouter"; import { User } from "../types/User"; -import { patch } from "../utils/http"; +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; @@ -15,6 +18,9 @@ interface IProps { 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 @@ -26,11 +32,20 @@ export const NewTicketModal: FC = ({ show, handleClose, allUsers }) => { e: FormEvent ) => { e.preventDefault(); - await patch( - `${Constants.projectsURI}/${id}/members`, - {} - // members.map(m => m.id) + let newTicket: Ticket = { + title: title, + description: description, + endingDate: endingDate, + id: 0, + status: "", + project: {} as Project + }; + console.log(newTicket); + const response: HttpResponse = await post( + `${Constants.ticketsURI}`, + newTicket ); + console.log(response.parsedBody); handleClose(); }; @@ -57,6 +72,12 @@ export const NewTicketModal: FC = ({ show, handleClose, allUsers }) => { diff --git a/client/src/components/NewTicketTabRouter.tsx b/client/src/components/NewTicketTabRouter.tsx index a6f7eda..2985d7a 100644 --- a/client/src/components/NewTicketTabRouter.tsx +++ b/client/src/components/NewTicketTabRouter.tsx @@ -4,13 +4,29 @@ 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 }) => { +export const NewTicketTabRouter: FC = ({ + tabNames, + users, + description, + setDescription, + title, + setTitle, + endingDate, + setEndingDate +}) => { const { url } = useRouteMatch(); return ( <> @@ -20,7 +36,14 @@ export const NewTicketTabRouter: FC = ({ tabNames, users }) => { - + diff --git a/client/src/components/ProjectList.tsx b/client/src/components/ProjectList.tsx index 067a52f..85d1460 100644 --- a/client/src/components/ProjectList.tsx +++ b/client/src/components/ProjectList.tsx @@ -55,7 +55,7 @@ export const ProjectList: FC = ({ projects }) => { {filteredTickets.length === 0 ? ( ) : ( - filteredTickets.map((t: Ticket) => ( + filteredTickets.map((t: Project) => ( { title: "Client objective meeting", description: "Client objective meeting", endingDate: "2020-02-17 15:51:02.787373", - status: "Done" + 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" + 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: [] diff --git a/client/src/types/Ticket.ts b/client/src/types/Ticket.ts index 8ec3a71..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; endingDate: string; + project: Project; }