Example #1
0
        public async Task <GetUserProfileRespond> Get(string id)
        {
            var isArgumentValid = !string.IsNullOrEmpty(id);

            if (!isArgumentValid)
            {
                return(null);
            }

            var userprofile = _userProfileRepo.GetUserProfileById(id);

            if (userprofile == null)
            {
                return(null);
            }
            var currentUser = System.Security.Claims.PrincipalExtensions.GetUserId(HttpContext.User);
            var user        = _userManager.FindByIdAsync(currentUser).Result;
            var isUserProfileSubscriptionValid = userprofile.Subscriptions != null && userprofile.Subscriptions.Any(it => it.LastActiveDate.HasValue);
            var userProfileInfo = new GetUserProfileRespond
            {
                UserProfileId      = userprofile.id,
                HasPassword        = _userManager.HasPasswordAsync(user).Result,
                FullName           = userprofile.Name,
                ImageUrl           = userprofile.ImageProfileUrl,
                SchoolName         = userprofile.SchoolName,
                IsPrivateAccout    = userprofile.IsPrivateAccount,
                IsReminderOnceTime = userprofile.CourseReminder == UserProfile.ReminderFrequency.Once
            };

            if (!isUserProfileSubscriptionValid)
            {
                return(userProfileInfo);
            }

            var lastActiveSubscription = userprofile.Subscriptions
                                         .Where(it => !it.DeletedDate.HasValue)
                                         .Where(it => it.LastActiveDate.HasValue)
                                         .OrderByDescending(it => it.LastActiveDate)
                                         .FirstOrDefault();

            userProfileInfo.CurrentClassRoomId     = lastActiveSubscription.ClassRoomId;
            userProfileInfo.CurrentClassCalendarId = lastActiveSubscription.ClassCalendarId;

            var classCalendar = await _classCalendarRepo.GetClassCalendarById(lastActiveSubscription.ClassCalendarId);

            var isClassCalendarValid = classCalendar != null && classCalendar.LessonCalendars != null && classCalendar.LessonCalendars.Any();

            if (!isClassCalendarValid)
            {
                return(userProfileInfo);
            }

            var now            = _dateTime.GetCurrentTime();
            var lessonCalendar = classCalendar.LessonCalendars
                                 .Where(it => !it.DeletedDate.HasValue)
                                 .Where(it => now.Date >= it.BeginDate)
                                 .OrderByDescending(it => it.BeginDate)
                                 .FirstOrDefault() ?? classCalendar.LessonCalendars.OrderBy(it => it.BeginDate).LastOrDefault();
            var currentLessonId = lessonCalendar?.LessonId;

            if (lessonCalendar == null)
            {
                return(userProfileInfo);
            }
            else
            {
                userProfileInfo.CurrentLessonId = lessonCalendar.LessonId;
                userProfileInfo.CurrentLessonNo = lessonCalendar.Order;
            }

            return(userProfileInfo);
        }