mirror of
https://github.com/chsakell/aspnet-core-signalr-angular.git
synced 2025-12-22 17:27:48 +00:00
update score feed moved to API controller
This commit is contained in:
@@ -7,6 +7,7 @@ using Microsoft.AspNetCore.SignalR.Infrastructure;
|
|||||||
using LiveGameFeed.Hubs;
|
using LiveGameFeed.Hubs;
|
||||||
using LiveGameFeed.Data.Abstract;
|
using LiveGameFeed.Data.Abstract;
|
||||||
using LiveGameFeed.Models;
|
using LiveGameFeed.Models;
|
||||||
|
using AutoMapper;
|
||||||
|
|
||||||
namespace LiveGameFeed.Controllers
|
namespace LiveGameFeed.Controllers
|
||||||
{
|
{
|
||||||
@@ -14,12 +15,15 @@ namespace LiveGameFeed.Controllers
|
|||||||
public class FeedsController : ApiHubController<Broadcaster>
|
public class FeedsController : ApiHubController<Broadcaster>
|
||||||
{
|
{
|
||||||
IFeedRepository _feedRepository;
|
IFeedRepository _feedRepository;
|
||||||
|
IMatchRepository _matchRepository;
|
||||||
public FeedsController(
|
public FeedsController(
|
||||||
IConnectionManager signalRConnectionManager,
|
IConnectionManager signalRConnectionManager,
|
||||||
IFeedRepository feedRepository)
|
IFeedRepository feedRepository,
|
||||||
|
IMatchRepository matchRepository)
|
||||||
: base(signalRConnectionManager)
|
: base(signalRConnectionManager)
|
||||||
{
|
{
|
||||||
_feedRepository = feedRepository;
|
_feedRepository = feedRepository;
|
||||||
|
_matchRepository = matchRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET api/values
|
// GET api/values
|
||||||
@@ -31,29 +35,33 @@ namespace LiveGameFeed.Controllers
|
|||||||
return _feeds;
|
return _feeds;
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET api/values/5
|
// GET api/feeds/5
|
||||||
[HttpGet("{id}")]
|
[HttpGet("{id}")]
|
||||||
public Feed Get(int id)
|
public Feed Get(int id)
|
||||||
{
|
{
|
||||||
return _feedRepository.GetSingle(id);
|
return _feedRepository.GetSingle(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// POST api/values
|
// POST api/feeds
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public void Post([FromBody]string value)
|
public async void Post([FromBody]FeedViewModel feed)
|
||||||
{
|
{
|
||||||
|
Match _match = _matchRepository.GetSingle(feed.MatchId);
|
||||||
|
Feed _matchFeed = new Feed()
|
||||||
|
{
|
||||||
|
Description = feed.Description,
|
||||||
|
CreatedAt = feed.CreatedAt,
|
||||||
|
MatchId = feed.MatchId
|
||||||
|
};
|
||||||
|
|
||||||
|
_match.Feeds.Add(_matchFeed);
|
||||||
|
|
||||||
|
_matchRepository.Commit();
|
||||||
|
|
||||||
|
FeedViewModel _feedVM = Mapper.Map<Feed, FeedViewModel>(_matchFeed);
|
||||||
|
|
||||||
|
await Clients.Group(feed.MatchId.ToString()).addFeed(_feedVM);
|
||||||
}
|
}
|
||||||
|
|
||||||
// PUT api/values/5
|
|
||||||
[HttpPut("{id}")]
|
|
||||||
public void Put(int id, [FromBody]string value)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// DELETE api/values/5
|
|
||||||
[HttpDelete("{id}")]
|
|
||||||
public void Delete(int id)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,10 +36,12 @@ namespace LiveGameFeed.Core
|
|||||||
{
|
{
|
||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
bool updateHost = r.Next(0, 2) == 1;
|
bool updateHost = r.Next(0, 2) == 1;
|
||||||
|
int points = r.Next(2,4);
|
||||||
|
|
||||||
if (updateHost)
|
if (updateHost)
|
||||||
match.HostScore += 2;
|
match.HostScore += points;
|
||||||
else
|
else
|
||||||
match.GuestScore += 2;
|
match.GuestScore += points;
|
||||||
|
|
||||||
MatchScore score = new MatchScore()
|
MatchScore score = new MatchScore()
|
||||||
{
|
{
|
||||||
@@ -47,10 +49,24 @@ namespace LiveGameFeed.Core
|
|||||||
GuestScore = match.GuestScore
|
GuestScore = match.GuestScore
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Update Score for all clients
|
||||||
using (var client = new HttpClient())
|
using (var client = new HttpClient())
|
||||||
{
|
{
|
||||||
await client.PutAsJsonAsync<MatchScore>(_apiURI + "matches/" + match.Id, score);
|
await client.PutAsJsonAsync<MatchScore>(_apiURI + "matches/" + match.Id, score);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update Feed for subscribed only clients
|
||||||
|
|
||||||
|
FeedViewModel _feed = new FeedViewModel()
|
||||||
|
{
|
||||||
|
MatchId = match.Id,
|
||||||
|
Description = points + " points for " + (updateHost == true ? match.Host : match.Guest + "!"),
|
||||||
|
CreatedAt = DateTime.Now
|
||||||
|
};
|
||||||
|
using (var client = new HttpClient())
|
||||||
|
{
|
||||||
|
await client.PostAsJsonAsync<FeedViewModel>(_apiURI + "feeds", _feed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user