private async void CardsView_OnItemAppearing(CardsView view, ItemAppearingEventArgs args) { _viewModel.IsZoomed = false; _viewModel.IsBusy = true; if (_viewModel.CanLoadMore && _viewModel.CurrentIndex < 1) { await LoadNewer(); } if (_viewModel.CanLoadMore && _viewModel.CurrentIndex > _viewModel.VideoItems.Count - 2) { await LoadOlder(); } _viewModel.CurrentVideoViewModel = _viewModel.VideoItems[_viewModel.CurrentIndex]; _viewModel.CurrentVideoId = _viewModel.CurrentVideoViewModel.VideoId; await UpdateEditInfo(); if (_viewModel.CurrentVideoViewModel.VideoTime != null && _viewModel.Progeny.BirthDay.HasValue) { DateTime picTimeBirthday = new DateTime(_viewModel.Progeny.BirthDay.Value.Ticks, DateTimeKind.Unspecified); PictureTime picTime = new PictureTime(picTimeBirthday, _viewModel.CurrentVideoViewModel.VideoTime, TimeZoneInfo.FindSystemTimeZoneById(_viewModel.Progeny.TimeZone)); _viewModel.PicTimeValid = true; _viewModel.PicYears = picTime.CalcYears(); _viewModel.PicMonths = picTime.CalcMonths(); _viewModel.PicWeeks = picTime.CalcWeeks(); _viewModel.PicDays = picTime.CalcDays(); _viewModel.PicHours = picTime.CalcHours(); _viewModel.PicMinutes = picTime.CalcMinutes(); } LocationMap.Pins.Clear(); if (!string.IsNullOrEmpty(_viewModel.CurrentVideoViewModel.Latitude) && !string.IsNullOrEmpty(_viewModel.CurrentVideoViewModel.Longtitude)) { LocationMap.IsVisible = true; bool latParsed = double.TryParse(_viewModel.CurrentVideoViewModel.Latitude, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out double lat); bool lonParsed = double.TryParse(_viewModel.CurrentVideoViewModel.Longtitude, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out double lon); if (latParsed && lonParsed) { Position position = new Position(lat, lon); Pin pin = new Pin(); pin.Position = position; pin.Label = _viewModel.CurrentVideoViewModel.Location; pin.Type = PinType.SavedPin; LocationMap.Pins.Add(pin); LocationMap.MoveToRegion(MapSpan.FromCenterAndRadius(position, Distance.FromKilometers(2))); } } else { LocationMap.IsVisible = false; } _viewModel.IsBusy = false; }
public async Task <IActionResult> Index(int id = 0) { int childId = id; string userEmail = HttpContext.User.FindFirst("email")?.Value ?? _defaultUser; string userTimeZone = HttpContext.User.FindFirst("timezone")?.Value ?? Constants.DefaultTimezone; if (string.IsNullOrEmpty(userTimeZone)) { userTimeZone = Constants.DefaultTimezone; } UserInfo userinfo = await _progenyHttpClient.GetUserInfo(userEmail); if (User.Identity.IsAuthenticated) { if (childId == 0 && userinfo.ViewChild > 0) { _progId = userinfo.ViewChild; } } else { _progId = Constants.DefaultChildId; } Progeny progeny = await _progenyHttpClient.GetProgeny(_progId); if (progeny.Name == "401") { var returnUrl = $"{Request.Scheme}://{Request.Host}{Request.PathBase}"; return(RedirectToAction("CheckOut", "Account", new { returnUrl })); } List <UserAccess> accessList = await _progenyHttpClient.GetProgenyAccessList(_progId); int userAccessLevel = (int)AccessLevel.Public; if (accessList.Count != 0) { UserAccess userAccess = accessList.SingleOrDefault(u => u.UserId.ToUpper() == userEmail.ToUpper()); if (userAccess != null) { userAccessLevel = userAccess.AccessLevel; } } if (progeny.IsInAdminList(userEmail)) { userAccessLevel = (int)AccessLevel.Private; } if (progeny.BirthDay.HasValue) { progeny.BirthDay = DateTime.SpecifyKind(progeny.BirthDay.Value, DateTimeKind.Unspecified); } HomeFeedViewModel feedModel = new HomeFeedViewModel(); feedModel.UserAccessLevel = (int)AccessLevel.Public; if (accessList.Count != 0) { UserAccess userAccess = accessList.SingleOrDefault(u => u.UserId.ToUpper() == userEmail.ToUpper()); if (userAccess != null) { feedModel.UserAccessLevel = userAccess.AccessLevel; } else { ViewBag.OriginalProgeny = progeny; progeny = await _progenyHttpClient.GetProgeny(Constants.DefaultChildId); } } if (progeny.IsInAdminList(userEmail)) { feedModel.UserAccessLevel = (int)AccessLevel.Private; } BirthTime progBirthTime; if (!String.IsNullOrEmpty(progeny.NickName) && progeny.BirthDay.HasValue && feedModel.UserAccessLevel < (int)AccessLevel.Public) { progBirthTime = new BirthTime(progeny.BirthDay.Value, TimeZoneInfo.FindSystemTimeZoneById(progeny.TimeZone)); } else { progBirthTime = new BirthTime(new DateTime(2018, 02, 18, 18, 02, 00), TimeZoneInfo.FindSystemTimeZoneById(progeny.TimeZone)); } feedModel.CurrentTime = progBirthTime.CurrentTime; feedModel.Years = progBirthTime.CalcYears(); feedModel.Months = progBirthTime.CalcMonths(); feedModel.Weeks = progBirthTime.CalcWeeks(); feedModel.Days = progBirthTime.CalcDays(); feedModel.Hours = progBirthTime.CalcHours(); feedModel.Minutes = progBirthTime.CalcMinutes(); feedModel.NextBirthday = progBirthTime.CalcNextBirthday(); feedModel.MinutesMileStone = progBirthTime.CalcMileStoneMinutes(); feedModel.HoursMileStone = progBirthTime.CalcMileStoneHours(); feedModel.DaysMileStone = progBirthTime.CalcMileStoneDays(); feedModel.WeeksMileStone = progBirthTime.CalcMileStoneWeeks(); Picture tempPicture = new Picture(); tempPicture.ProgenyId = 0; tempPicture.Progeny = progeny; tempPicture.AccessLevel = (int)AccessLevel.Public; tempPicture.PictureLink600 = $"https://{Request.Host}{Request.PathBase}" + "/photodb/0/default_temp.jpg"; tempPicture.ProgenyId = progeny.Id; tempPicture.PictureTime = new DateTime(2018, 9, 1, 12, 00, 00); Picture displayPicture = tempPicture; if (feedModel.UserAccessLevel < (int)AccessLevel.Public) { displayPicture = await _mediaHttpClient.GetRandomPicture(progeny.Id, feedModel.UserAccessLevel, userTimeZone); } PictureTime picTime = new PictureTime(new DateTime(2018, 02, 18, 20, 18, 00), new DateTime(2018, 02, 18, 20, 18, 00), TimeZoneInfo.FindSystemTimeZoneById(progeny.TimeZone)); if (feedModel.UserAccessLevel == (int)AccessLevel.Public || displayPicture == null) { displayPicture = await _mediaHttpClient.GetRandomPicture(Constants.DefaultChildId, feedModel.UserAccessLevel, userTimeZone); if (!displayPicture.PictureLink600.StartsWith("https://")) { displayPicture.PictureLink600 = _imageStore.UriFor(displayPicture.PictureLink600); } feedModel.ImageLink600 = displayPicture.PictureLink600; feedModel.ImageId = displayPicture.PictureId; picTime = new PictureTime(new DateTime(2018, 02, 18, 20, 18, 00), displayPicture.PictureTime, TimeZoneInfo.FindSystemTimeZoneById(progeny.TimeZone)); feedModel.Tags = displayPicture.Tags; feedModel.Location = displayPicture.Location; feedModel.PicTimeValid = false; } else { if (!displayPicture.PictureLink600.StartsWith("https://")) { displayPicture.PictureLink600 = _imageStore.UriFor(displayPicture.PictureLink600); } feedModel.ImageLink600 = displayPicture.PictureLink600; feedModel.ImageId = displayPicture.PictureId; if (displayPicture.PictureTime != null && progeny.BirthDay.HasValue) { picTime = new PictureTime(progeny.BirthDay.Value, displayPicture.PictureTime, TimeZoneInfo.FindSystemTimeZoneById(progeny.TimeZone)); feedModel.PicTimeValid = true; } feedModel.Tags = displayPicture.Tags; feedModel.Location = displayPicture.Location; } feedModel.PicTime = picTime.PictureDateTime; feedModel.PicYears = picTime.CalcYears(); feedModel.PicMonths = picTime.CalcMonths(); feedModel.PicWeeks = picTime.CalcWeeks(); feedModel.PicDays = picTime.CalcDays(); feedModel.PicHours = picTime.CalcHours(); feedModel.PicMinutes = picTime.CalcMinutes(); feedModel.Progeny = progeny; feedModel.EventsList = new List <CalendarItem>(); feedModel.EventsList = await _progenyHttpClient.GetUpcomingEvents(_progId, userAccessLevel); foreach (CalendarItem eventItem in feedModel.EventsList) { if (eventItem.StartTime.HasValue && eventItem.EndTime.HasValue) { eventItem.StartTime = TimeZoneInfo.ConvertTimeFromUtc(eventItem.StartTime.Value, TimeZoneInfo.FindSystemTimeZoneById(userinfo.Timezone)); eventItem.EndTime = TimeZoneInfo.ConvertTimeFromUtc(eventItem.EndTime.Value, TimeZoneInfo.FindSystemTimeZoneById(userinfo.Timezone)); } } feedModel.LatestPosts = new TimeLineViewModel(); feedModel.LatestPosts.TimeLineItems = new List <TimeLineItem>(); feedModel.LatestPosts.TimeLineItems = await _progenyHttpClient.GetProgenyLatestPosts(_progId, userAccessLevel); if (feedModel.LatestPosts.TimeLineItems.Any()) { feedModel.LatestPosts.TimeLineItems = feedModel.LatestPosts.TimeLineItems.OrderByDescending(t => t.ProgenyTime).Take(5).ToList(); } feedModel.YearAgoPosts = new TimeLineViewModel(); feedModel.YearAgoPosts.TimeLineItems = new List <TimeLineItem>(); feedModel.YearAgoPosts.TimeLineItems = await _progenyHttpClient.GetProgenyYearAgo(_progId, userAccessLevel); if (feedModel.YearAgoPosts.TimeLineItems.Any()) { feedModel.YearAgoPosts.TimeLineItems = feedModel.YearAgoPosts.TimeLineItems.OrderByDescending(t => t.ProgenyTime).ToList(); } return(View(feedModel)); }
public async Task <IActionResult> Video(int id, int childId = 0, string tagFilter = "", int sortBy = 1) { _progId = childId; string userEmail = HttpContext.User.FindFirst("email")?.Value ?? _defaultUser; string userTimeZone = HttpContext.User.FindFirst("timezone")?.Value ?? Constants.DefaultTimezone; if (string.IsNullOrEmpty(userTimeZone)) { userTimeZone = Constants.DefaultTimezone; } UserInfo userinfo = await _progenyHttpClient.GetUserInfo(userEmail); if (childId == 0 && userinfo.ViewChild > 0) { _progId = userinfo.ViewChild; } Progeny progeny = await _progenyHttpClient.GetProgeny(_progId); List <UserAccess> accessList = await _progenyHttpClient.GetProgenyAccessList(_progId); int userAccessLevel = (int)AccessLevel.Public; if (accessList.Count != 0) { UserAccess userAccess = accessList.SingleOrDefault(u => u.UserId.ToUpper() == userEmail.ToUpper()); if (userAccess != null) { userAccessLevel = userAccess.AccessLevel; } } if (progeny.IsInAdminList(userEmail)) { _userIsProgenyAdmin = true; userAccessLevel = (int)AccessLevel.Private; } VideoViewModel video = await _mediaHttpClient.GetVideoViewModel(id, userAccessLevel, sortBy, userinfo.Timezone); VideoViewModel model = new VideoViewModel(); model.VideoId = video.VideoId; model.VideoType = video.VideoType; model.VideoTime = video.VideoTime; model.ProgenyId = video.ProgenyId; model.Progeny = progeny; model.Owners = video.Owners; model.VideoLink = video.VideoLink; model.ThumbLink = video.ThumbLink; model.AccessLevel = video.AccessLevel; model.Author = video.Author; model.AccessLevelListEn[video.AccessLevel].Selected = true; model.AccessLevelListDa[video.AccessLevel].Selected = true; model.AccessLevelListDe[video.AccessLevel].Selected = true; model.CommentThreadNumber = video.CommentThreadNumber; model.Tags = video.Tags; model.TagsList = video.TagsList; model.Location = video.Location; model.Latitude = video.Latitude; model.Longtitude = video.Longtitude; model.Altitude = video.Altitude; model.VideoNumber = video.VideoNumber; model.VideoCount = video.VideoCount; model.PrevVideo = video.PrevVideo; model.NextVideo = video.NextVideo; model.CommentsList = video.CommentsList; model.CommentsCount = video.CommentsList?.Count ?? 0; model.TagFilter = tagFilter; model.SortBy = sortBy; model.UserId = HttpContext.User.FindFirst("sub")?.Value ?? _defaultUser; model.IsAdmin = _userIsProgenyAdmin; if (video.Duration != null) { model.DurationHours = video.Duration.Value.Hours.ToString(); model.DurationMinutes = video.Duration.Value.Minutes.ToString(); model.DurationSeconds = video.Duration.Value.Seconds.ToString(); } if (model.VideoTime != null && progeny.BirthDay.HasValue) { PictureTime picTime = new PictureTime(progeny.BirthDay.Value, TimeZoneInfo.ConvertTimeToUtc(model.VideoTime.Value, TimeZoneInfo.FindSystemTimeZoneById(userTimeZone)), TimeZoneInfo.FindSystemTimeZoneById(progeny.TimeZone)); model.VidTimeValid = true; model.VidTime = model.VideoTime.Value.ToString("dd MMMM yyyy HH:mm"); // Todo: Replace string format with global constant or user defined value model.VidYears = picTime.CalcYears(); model.VidMonths = picTime.CalcMonths(); model.VidWeeks = picTime.CalcWeeks(); model.VidDays = picTime.CalcDays(); model.VidHours = picTime.CalcHours(); model.VidMinutes = picTime.CalcMinutes(); } else { model.VidTimeValid = false; model.VidTime = ""; } if (model.CommentsCount > 0) { foreach (Comment cmnt in model.CommentsList) { UserInfo cmntAuthor = await _progenyHttpClient.GetUserInfoByUserId(cmnt.Author); string authorImg = cmntAuthor?.ProfilePicture ?? ""; string authorName = ""; if (!String.IsNullOrEmpty(authorImg)) { if (!authorImg.ToLower().StartsWith("http")) { authorImg = _imageStore.UriFor(authorImg, "profiles"); } } else { authorImg = "/photodb/profile.jpg"; } cmnt.AuthorImage = authorImg; if (!String.IsNullOrEmpty(cmntAuthor.FirstName)) { authorName = cmntAuthor.FirstName; } if (!String.IsNullOrEmpty(cmntAuthor.MiddleName)) { authorName = authorName + " " + cmntAuthor.MiddleName; } if (!String.IsNullOrEmpty(cmntAuthor.LastName)) { authorName = authorName + " " + cmntAuthor.LastName; } authorName = authorName.Trim(); if (String.IsNullOrEmpty(authorName)) { authorName = cmntAuthor.UserName; if (String.IsNullOrEmpty(authorName)) { authorName = cmnt.DisplayName; } } cmnt.DisplayName = authorName; } } if (model.IsAdmin) { model.ProgenyLocations = new List <Location>(); model.ProgenyLocations = await _progenyHttpClient.GetProgenyLocations(model.ProgenyId, userAccessLevel); model.LocationsList = new List <SelectListItem>(); if (model.ProgenyLocations.Any()) { foreach (Location loc in model.ProgenyLocations) { SelectListItem selectListItem = new SelectListItem(); selectListItem.Text = loc.Name; selectListItem.Value = loc.LocationId.ToString(); model.LocationsList.Add(selectListItem); } } } return(View(model)); }
private async Task UpdateProgenyData() { AgeInfoStackLayout.IsVisible = false; RandomPictureStackLayout.IsVisible = false; _viewModel.CurrentTime = DateTime.Now.ToString(CultureInfo.InvariantCulture); BirthTime progBirthTime; if (!String.IsNullOrEmpty(_viewModel.Progeny.NickName) && _viewModel.Progeny.BirthDay.HasValue && _viewModel.UserAccessLevel < 5) { progBirthTime = new BirthTime(_viewModel.Progeny.BirthDay.Value, TimeZoneInfo.FindSystemTimeZoneById(_viewModel.Progeny.TimeZone)); } else { progBirthTime = new BirthTime(new DateTime(2018, 02, 18, 18, 02, 00), TimeZoneInfo.FindSystemTimeZoneById(_viewModel.Progeny.TimeZone)); } _viewModel.CurrentTime = progBirthTime.CurrentTime; _viewModel.Years = progBirthTime.CalcYears(); _viewModel.Months = progBirthTime.CalcMonths(); _viewModel.Weeks = progBirthTime.CalcWeeks(); _viewModel.Days = progBirthTime.CalcDays(); _viewModel.Hours = progBirthTime.CalcHours(); _viewModel.Minutes = progBirthTime.CalcMinutes(); _viewModel.NextBirthday = progBirthTime.CalcNextBirthday(); _viewModel.MinutesMileStone = progBirthTime.CalcMileStoneMinutes(); _viewModel.HoursMileStone = progBirthTime.CalcMileStoneHours(); _viewModel.DaysMileStone = progBirthTime.CalcMileStoneDays(); _viewModel.WeeksMileStone = progBirthTime.CalcMileStoneWeeks(); Picture tempPicture = OfflineDefaultData.DefaultPicture; Picture displayPicture = tempPicture; if (_viewModel.UserAccessLevel < 5 && _viewModel.Online) { displayPicture = await ProgenyService.GetRandomPicture(_viewModel.Progeny.Id, _viewModel.UserAccessLevel, _viewModel.UserInfo.Timezone); } _viewModel.ImageLink600 = displayPicture.PictureLink600; _viewModel.ImageLink = displayPicture.PictureLink1200; _viewModel.ImageId = displayPicture.PictureId; PictureTime picTime = new PictureTime(new DateTime(2018, 02, 18, 20, 18, 00), new DateTime(2018, 02, 18, 20, 18, 00), TimeZoneInfo.FindSystemTimeZoneById(_viewModel.Progeny.TimeZone)); if (displayPicture.PictureTime != null && _viewModel.Progeny.BirthDay.HasValue) { DateTime picTimeBirthday = new DateTime(_viewModel.Progeny.BirthDay.Value.Ticks, DateTimeKind.Unspecified); picTime = new PictureTime(picTimeBirthday, displayPicture.PictureTime, TimeZoneInfo.FindSystemTimeZoneById(_viewModel.Progeny.TimeZone)); _viewModel.PicTimeValid = true; } _viewModel.Tags = displayPicture.Tags; _viewModel.Location = displayPicture.Location; _viewModel.PicTime = picTime.PictureDateTime; _viewModel.PicYears = picTime.CalcYears(); _viewModel.PicMonths = picTime.CalcMonths(); _viewModel.PicWeeks = picTime.CalcWeeks(); _viewModel.PicDays = picTime.CalcDays(); _viewModel.PicHours = picTime.CalcHours(); _viewModel.PicMinutes = picTime.CalcMinutes(); AgeInfoStackLayout.IsVisible = true; RandomPictureStackLayout.IsVisible = true; }