generated from VLADIMIR/template
	add logic
This commit is contained in:
		
							parent
							
								
									e1b342d12c
								
							
						
					
					
						commit
						73838d7773
					
				| @ -2,6 +2,7 @@ package services | |||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"evening_detective/internal/models" | 	"evening_detective/internal/models" | ||||||
|  | 	"evening_detective/internal/services/story_service" | ||||||
| 	"evening_detective/proto" | 	"evening_detective/proto" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| @ -32,3 +33,9 @@ func mapActionToProtoAction(action *models.Action) *proto.Action { | |||||||
| 		Place: action.Place, | 		Place: action.Place, | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func mapApplicationToProtoApplication(application *story_service.Application) *proto.Application { | ||||||
|  | 	return &proto.Application{ | ||||||
|  | 		Name: application.Name, | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | |||||||
| @ -45,9 +45,13 @@ func (s *Services) AddAction(ctx context.Context, req *proto.AddActionReq) (*pro | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  | 	place, err := s.storyService.GetPlace(req.Place) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
| 	actions := []*models.Action{ | 	actions := []*models.Action{ | ||||||
| 		{ | 		{ | ||||||
| 			Place:  req.Place, | 			Place:  place.Code, | ||||||
| 			TeamID: team.ID, | 			TeamID: team.ID, | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| @ -79,6 +83,10 @@ func (s *Services) GetTeam(ctx context.Context, req *proto.GetTeamReq) (*proto.G | |||||||
| 			return nil, err | 			return nil, err | ||||||
| 		} | 		} | ||||||
| 		newAction.Text = place.Text | 		newAction.Text = place.Text | ||||||
|  | 		newAction.Applications = make([]*proto.Application, 0, len(place.Applications)) | ||||||
|  | 		for _, application := range place.Applications { | ||||||
|  | 			newAction.Applications = append(newAction.Applications, mapApplicationToProtoApplication(application)) | ||||||
|  | 		} | ||||||
| 		res = append(res, newAction) | 		res = append(res, newAction) | ||||||
| 	} | 	} | ||||||
| 	return &proto.GetTeamRsp{Actions: res}, err | 	return &proto.GetTeamRsp{Actions: res}, err | ||||||
|  | |||||||
| @ -3,7 +3,9 @@ package story_service | |||||||
| import ( | import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"errors" | 	"errors" | ||||||
|  | 	"fmt" | ||||||
| 	"os" | 	"os" | ||||||
|  | 	"strings" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Story struct { | type Story struct { | ||||||
| @ -13,6 +15,11 @@ type Story struct { | |||||||
| type Place struct { | type Place struct { | ||||||
| 	Code         string         `json:"code"` | 	Code         string         `json:"code"` | ||||||
| 	Text         string         `json:"text"` | 	Text         string         `json:"text"` | ||||||
|  | 	Applications []*Application `json:"applications"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type Application struct { | ||||||
|  | 	Name string `json:"name"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type StoryService struct { | type StoryService struct { | ||||||
| @ -32,10 +39,16 @@ func NewStoryService() (*StoryService, error) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (s *StoryService) GetPlace(code string) (*Place, error) { | func (s *StoryService) GetPlace(code string) (*Place, error) { | ||||||
|  | 	code = clearCode(code) | ||||||
| 	for _, place := range s.story.Places { | 	for _, place := range s.story.Places { | ||||||
| 		if place.Code == code { | 		if clearCode(place.Code) == code { | ||||||
| 			return place, nil | 			return place, nil | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	return nil, errors.New("place not found") | 	return nil, errors.New(fmt.Sprintf("place not found: %s", code)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func clearCode(code string) string { | ||||||
|  | 	code = strings.ToLower(code) | ||||||
|  | 	return strings.ReplaceAll(code, "-", "") | ||||||
| } | } | ||||||
|  | |||||||
| @ -5,9 +5,30 @@ | |||||||
|             "text": "Вас приветствуют волонтеры, говорят что игорек где-то здесь, но точно они не знают.", |             "text": "Вас приветствуют волонтеры, говорят что игорек где-то здесь, но точно они не знают.", | ||||||
|             "applications": [ |             "applications": [ | ||||||
|                 { |                 { | ||||||
|                     "name": "Карта" |                     "name": "Карта площадки" | ||||||
|                 } |                 } | ||||||
|             ] |             ] | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "code": "М-1", | ||||||
|  |             "text": "Ребята делают мод для майнкрафта, не стоит их беспокоить." | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "code": "О-1", | ||||||
|  |             "text": "Организаторы говорят что игорек убежал на пробежку и если поторопиться его можно успеть поймать.", | ||||||
|  |             "applications": [ | ||||||
|  |                 { | ||||||
|  |                     "name": "Карта базы" | ||||||
|  |                 } | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "code": "Б-1", | ||||||
|  |             "text": "Тут его нет, вы чествуете только прохладный ветер." | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "code": "Б-2", | ||||||
|  |             "text": "А вот и он уже делает зарядку!" | ||||||
|         } |         } | ||||||
|     ] |     ] | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user