public async Task <IHttpActionResult> PutFeedbackRequest(int id, FeedbackRequestDto feedbackRequestDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != feedbackRequestDto.ID)
            {
                return(BadRequest());
            }
            var feedbackRequest = DtoToEntityIMapper.Map <FeedbackRequestDto, FeedbackRequest>(feedbackRequestDto); ////

            UoW.GetRepository <FeedbackRequest>().ModifyEntityState(feedbackRequest);

            try
            {
                await UoW.SaveAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FeedbackRequestExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Ejemplo n.º 2
0
        public FeedbackResponseDto Create(FeedbackRequestDto feedbackRequestDto)
        {
            var contact = contactRepository.FindByEmailAndTelephone(feedbackRequestDto.Contact.Email, feedbackRequestDto.Contact.Telephone) ??
                          contactRepository.Create(mapper.Map <Contact>(feedbackRequestDto.Contact));
            var topic = topicRepository.FindByName(feedbackRequestDto.Topic.Name)
                        .OrElseThrow(() => new TopicNotFoundException($"Topic with name {feedbackRequestDto.Topic.Name} not found"));
            var message = messageRepository.Create(mapper.Map <Message>(feedbackRequestDto.Message));

            message.ChangeContact(contact.AddMessage(message))
            .ChangeTopic(topic);

            feedbackRepository.Create(new Feedback()
            {
                Contact = contact,
                Topic   = topic,
                Message = message
            });

            feedbackRepository.Save();
            contactRepository.Save();
            topicRepository.Save();
            messageRepository.Save();

            return(new FeedbackResponseDto
            {
                Contact = mapper.Map <ContactResponseDto>(contact),
                Topic = mapper.Map <TopicResponseDto>(topic),
                Message = mapper.Map <MessageResponseDto>(message)
            });
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Post([FromBody] FeedbackRequestDto request)
        {
            Guid?teamId = await _dbContext.Androids.Where(x => x.Id == request.AndroidId)
                          .Select(x => (Guid?)x.TeamId).SingleOrDefaultAsync();

            if (teamId.HasValue)
            {
                return(Ok(new FeedbackResponseDto {
                    TeamId = teamId.Value
                }));
            }
            return(NotFound());
        }
        public async Task <IHttpActionResult> PostFeedbackRequest(FeedbackRequestDto feedbackRequestDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var feedbackRequest = DtoToEntityIMapper.Map <FeedbackRequestDto, FeedbackRequest>(feedbackRequestDto); ////

            UoW.GetRepository <FeedbackRequest>().Insert(feedbackRequest);
            await UoW.SaveAsync();

            return(CreatedAtRoute("DefaultApi", new { id = feedbackRequest.ID }, feedbackRequest));
        }
        public async Task <ActionResult <FeedbackRequestDto> > PostFeedbackRequest([FromBody] FeedbackRequestDto feedbackRequestDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            FeedbackRequest feedbackRequest = DtoToEntityIMapper.Map <FeedbackRequestDto, FeedbackRequest>(feedbackRequestDto);

            repository.Add(feedbackRequest);
            await uoW.SaveAsync();

            return(CreatedAtAction("GetFeedbackRequest", new { id = feedbackRequest.ID }, feedbackRequestDto));
        }
        public async Task <ActionResult <FeedbackRequestDto> > GetFeedbackRequest([FromRoute] int id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var feedbackRequest = await repository.GetAsync(a => a.ID == id);

            if (feedbackRequest == null)
            {
                return(NotFound());
            }

            FeedbackRequestDto feedbackRequestDto = EntityToDtoIMapper.Map <FeedbackRequest, FeedbackRequestDto>(feedbackRequest);

            return(Ok(feedbackRequestDto));
        }
Ejemplo n.º 7
0
 public IActionResult CreateFeedback([FromBody] FeedbackRequestDto dto)
 {
     return(Created("", feedbackService.Create(dto)));
 }
Ejemplo n.º 8
0
 public IActionResult PostFeedback([FromBody] FeedbackRequestDto feedback)
 {
     return(Ok(new FeedbackResponseDto {
         TeamId = Guid.NewGuid()
     }));
 }
Ejemplo n.º 9
0
        private static async Task HandlePendingSensoryData()
        {
            using (HtfDbContext dbContext = new HtfDbContext())
            {
                Console.WriteLine("[ HTF2017 - Getting pending sensory data... ]");
                List <SensoryData> data = await dbContext.SensoryData
                                          .Where(x => !x.Sent).OrderBy(x => x.TimeStamp).ToListAsync();

                Console.WriteLine(
                    $"[ HTF2017 - {(data.Count > 0 ? $"{data.Count}" : "no")} pending sensory data found. ]");

                foreach (SensoryData d in data)
                {
                    Team team = await dbContext.Androids.Where(x => x.Id == d.AndroidId)
                                .Select(x => x.Team).SingleOrDefaultAsync();

                    if (team != null)
                    {
                        Console.WriteLine($"[ HTF2017 - Processing data for '{team.Name}'. ]");
                        Boolean received = false;

                        try
                        {
                            RestClient         client   = new RestClient(team.FeedbackEndpoint);
                            RestRequest        request  = new RestRequest(Method.POST);
                            FeedbackRequestDto feedback = new FeedbackRequestDto
                            {
                                AndroidId         = d.AndroidId,
                                Longitude         = d.Longitude,
                                Lattitude         = d.Lattitude,
                                Crowd             = d.Crowd,
                                Mood              = d.Mood,
                                Relationship      = d.Relationship,
                                TimeStamp         = d.TimeStamp,
                                AutonomousRequest = d.AutonomousRequested
                            };
                            request.AddJsonBody(feedback);
                            FeedbackResponseDto response = await client.PostTaskAsync <FeedbackResponseDto>(request);

                            if (response != null && response.TeamId == team.Id)
                            {
                                if (d.AutonomousRequested)
                                {
                                    team.Score += 10;
                                }
                                else
                                {
                                    team.Score += 20;
                                }
                                received = true;
                            }
                            else
                            {
                                team.Score--;
                            }
                        }
                        catch
                        {
                            team.Score--;
                        }

                        d.Sent     = true;
                        d.Received = received;
                        await dbContext.SaveChangesAsync();

                        Console.WriteLine($"[ HTF2017 - data for '{team.Name}' {(received ? "successfully sent" : "failed to send")}. ]");
                    }
                    else
                    {
                        Console.WriteLine($"[ HTF2017 - PANIC - No team found for android '{d.AndroidId}'! ]");
                    }
                    await Task.Delay(100);
                }
            }
        }
        public async Task <ActionResult <FeedbackRequestDto> > PutFeedbackRequest([FromRoute] int id, [FromBody] FeedbackRequestDto feedbackRequestDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != feedbackRequestDto.ID)
            {
                return(BadRequest());
            }

            FeedbackRequest feedbackRequest = DtoToEntityIMapper.Map <FeedbackRequestDto, FeedbackRequest>(feedbackRequestDto);

            repository.ModifyEntryState(feedbackRequest, EntityState.Modified);

            try
            {
                await uoW.SaveAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FeedbackRequestExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }