update events

This commit is contained in:
andrusyakka
2023-08-01 16:48:54 +03:00
parent 46afe2e794
commit c55df47ada
5 changed files with 127 additions and 38 deletions

View File

@@ -11,10 +11,10 @@ import (
)
func (h *Handler) CreateEvent(c echo.Context) (err error) {
var person *model.PersonalInformation
event := new(model.CreateEvent)
authorId, err := uuid.Parse(c.Request().Header.Get("UserId"))
orgId, err := uuid.Parse(c.Request().Header.Get("UserOrganizationId"))
if err != nil {
return c.NoContent(http.StatusUnauthorized)
}
@@ -23,19 +23,46 @@ func (h *Handler) CreateEvent(c echo.Context) (err error) {
return c.NoContent(http.StatusBadRequest)
}
usersMap, err := services.GetUsers([]uuid.UUID{event.EmployeeId, authorId}, c.Request().Header)
if event.Person.ID.ID() != 0 {
person, err = services.GetPerson(event.Person.ID, c.Request().Header)
if err != nil || person.ID != event.Person.ID {
return c.NoContent(http.StatusBadRequest)
}
} else {
newPerson := model.PersonalInformationCreate{
FirstName: event.Person.FirstName,
LastName: event.Person.LastName,
Patronymic: event.Person.Patronymic,
Contacts: []model.Contact{
{
Category: "PHONE",
Value: event.Person.Phone,
},
},
}
if err != nil {
return c.HTML(http.StatusBadGateway, err.Error())
person, err = services.CreatePerson(newPerson, c.Request().Header)
if err != nil || person.ID.ID() == 0 {
return c.NoContent(http.StatusBadRequest)
}
}
employee := usersMap[event.EmployeeId]
usersMap, err := services.GetUsers([]uuid.UUID{event.MedicId, authorId}, c.Request().Header)
if err != nil || len(usersMap) == 0 {
return c.HTML(http.StatusBadGateway, "Error get users")
}
medic := usersMap[event.MedicId]
author := usersMap[authorId]
newEvent, err := utils.TypeConverter[model.Event](event)
newEvent.OrgId = orgId
newEvent.MedicId = event.MedicId
newEvent.AuthorId = authorId
newEvent.PersonId = person.ID
newEvent.Person = *person
tx := h.DB.Create(&newEvent)
@@ -44,7 +71,7 @@ func (h *Handler) CreateEvent(c echo.Context) (err error) {
}
newEvent.Author = author
newEvent.Employee = employee
newEvent.Medic = medic
return c.JSON(http.StatusCreated, newEvent)
}
@@ -70,7 +97,7 @@ func (h *Handler) GetEvents(c echo.Context) (err error) {
ids := set.New[uuid.UUID](len(events) * 2)
for _, event := range events {
ids.Insert(event.EmployeeId)
ids.Insert(event.MedicId)
ids.Insert(event.AuthorId)
}
@@ -81,7 +108,7 @@ func (h *Handler) GetEvents(c echo.Context) (err error) {
for i, event := range events {
events[i].Author = usersMap[event.AuthorId]
events[i].Employee = usersMap[event.EmployeeId]
events[i].Medic = usersMap[event.MedicId]
}
return c.JSON(http.StatusOK, events)
@@ -102,16 +129,16 @@ func (h *Handler) GetEvent(c echo.Context) error {
return c.NoContent(http.StatusNotFound)
}
usersMap, err := services.GetUsers([]uuid.UUID{event.EmployeeId, event.AuthorId}, c.Request().Header)
usersMap, err := services.GetUsers([]uuid.UUID{event.MedicId, event.AuthorId}, c.Request().Header)
if err != nil {
return c.HTML(http.StatusBadGateway, err.Error())
}
employee := usersMap[event.EmployeeId]
medic := usersMap[event.MedicId]
author := usersMap[event.AuthorId]
event.Employee = employee
event.Medic = medic
event.Author = author
return c.JSON(http.StatusOK, event)