cloutier--bird.makeup/src/BirdsiteLive.Domain/BusinessUseCases/ProcessFollowUser.cs

53 lines
2.1 KiB
C#
Raw Normal View History

2020-07-07 21:03:20 -04:00
using System.Threading.Tasks;
using BirdsiteLive.DAL.Contracts;
namespace BirdsiteLive.Domain.BusinessUseCases
{
public interface IProcessFollowUser
{
2020-08-10 20:04:12 -04:00
Task ExecuteAsync(string followerUsername, string followerDomain, string twitterUsername, string followerInbox, string sharedInbox);
2020-07-07 21:03:20 -04:00
}
public class ProcessFollowUser : IProcessFollowUser
{
private readonly IFollowersDal _followerDal;
private readonly ITwitterUserDal _twitterUserDal;
#region Ctor
public ProcessFollowUser(IFollowersDal followerDal, ITwitterUserDal twitterUserDal)
{
_followerDal = followerDal;
_twitterUserDal = twitterUserDal;
}
#endregion
2020-08-10 20:04:12 -04:00
public async Task ExecuteAsync(string followerUsername, string followerDomain, string twitterUsername, string followerInbox, string sharedInbox)
2020-07-07 21:03:20 -04:00
{
// Get Follower and Twitter Users
var follower = await _followerDal.GetFollowerAsync(followerUsername, followerDomain);
if (follower == null)
{
2020-08-10 20:04:12 -04:00
await _followerDal.CreateFollowerAsync(followerUsername, followerDomain, followerInbox, sharedInbox);
2020-07-07 21:03:20 -04:00
follower = await _followerDal.GetFollowerAsync(followerUsername, followerDomain);
}
var twitterUser = await _twitterUserDal.GetTwitterUserAsync(twitterUsername);
if (twitterUser == null)
{
await _twitterUserDal.CreateTwitterUserAsync(twitterUsername, -1);
twitterUser = await _twitterUserDal.GetTwitterUserAsync(twitterUsername);
}
// Update Follower
var twitterUserId = twitterUser.Id;
if(!follower.Followings.Contains(twitterUserId))
follower.Followings.Add(twitterUserId);
if(!follower.FollowingsSyncStatus.ContainsKey(twitterUserId))
follower.FollowingsSyncStatus.Add(twitterUserId, -1);
2020-07-07 21:03:20 -04:00
// Save Follower
await _followerDal.UpdateFollowerAsync(follower);
}
}
}