Exemple #1
0
        public async Task <ActionResult> Overview(string targetUserId)
        {
            if (String.IsNullOrEmpty(targetUserId))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            string userId = User.Identity.GetUserId();

            if (userId == targetUserId)
            {
                return(RedirectToAction("Index"));
            }

            var resultWithDataProfile = await UserService.GetProfileByUserIdAsync(targetUserId);

            var resultWithDataUser = await UserService.GetByUserIdAsync(targetUserId);

            var resultWithDataUserName = await UserService.GetUserNameByUserId(userId);

            var resultWithDataSubscribersCount   = _subscriptionService.GetSubscribersCountByUserId(targetUserId);
            var resultWithDataSubscribtionsCount = _subscriptionService.GetSubscriptionsCountByUserId(targetUserId);
            var resultWithDataCanSubscribe       = _subscriptionService.CanSubscribe(userId, targetUserId);

            if (!resultWithDataProfile.Success || !resultWithDataUser.Success || !resultWithDataUserName.Success)
            {
                // TODO
            }

            var profile = resultWithDataProfile.ResultData;
            var user    = resultWithDataUser.ResultData;

            var model = new OverviewProfileViewModel
            {
                TargetUserId    = targetUserId,
                Name            = profile.Name,
                Surname         = profile.Surname,
                DateOfBirth     = profile.DateOfBirth?.ToString("d MMMM, yyyy"),
                CreatedAt       = profile.CreatedAt.ToString("d MMMM, yyyy HH:mm"),
                AvatarImagePath = GetAvatarImagePath(targetUserId),
                UserName        = resultWithDataUserName.ResultData,
                // TODO only public
                DictionariesCount  = user.Dictionaries.Count,
                SubscribersCount   = resultWithDataSubscribersCount.ResultData,
                SubscriptionsCount = resultWithDataSubscribtionsCount.ResultData,
                CanSubscribe       = resultWithDataCanSubscribe.ResultData,
            };

            return(View(model));
        }