private Task <SwaggerResponse <DayResponse> > PunchAsync(bool direction) { var headers = new Dictionary <string, IEnumerable <string> >(); try { var userId = _httpContextAccessor.HttpContext.User.FindFirst(cl => cl.Type.Equals("id")).Value; foreach (var cl in _httpContextAccessor.HttpContext.User.Claims) { System.Console.WriteLine(cl.Subject.Name); } _unitOfWork.Punches.Punch(userId, direction); var response = _unitOfWork.DayPunches.GetDay(userId, null, null, null); return(Task.FromResult(new SwaggerResponse <DayResponse>(StatusCodes.Status200OK, headers, response))); } catch (Exception exception) { var response = new DayResponse { Status = new OpResult { Success = false, Result = $"Failed to punch and get Today's punches. Exception: {exception.Message}" } }; return(HandleException <DayResponse>(exception, headers)); } }
public DayResponse GetDay(string userId, double?day, double?month, double?year) { try { var user = _appUserRepository.FindById(userId); if (user == null) { throw new RepositoryException(StatusCodes.Status404NotFound, $"User {userId} not found"); } var dt = DateTime.Now; var selectDay = day.HasValue ? Convert.ToInt32(day) : dt.Day; var selectMonth = month.HasValue ? Convert.ToInt32(month) : dt.Month; var selectYear = year.HasValue ? Convert.ToInt32(year) : dt.Year; var punches = Context.Punches .Where(p => p.User.Id == user.Id) .Where(p => p.DayPunch.Day == selectDay) .Where(p => p.MonthPunch.Month == selectMonth) .Where(p => p.YearPunch.Year == selectYear) .ToList(); var response = new DayResponse { Status = new OpResult { Success = true }, }; var dayPunch = new DayPunchesDto(); dayPunch.GetRowedDayPunches(punches.OrderBy(dp => dp.TimeDec).ToArray()); dayPunch.Day = selectDay; dayPunch.Month = selectMonth; dayPunch.Year = selectYear; response.Punches = dayPunch; return(response); } catch (RepositoryException) { throw; } catch (Exception exception) { throw new RepositoryException(StatusCodes.Status400BadRequest, $"GetCurret day punches threw an exception: {exception.Message}", exception); } }
public ServiceResponse <WeekSummaryResponse> WeekSummary(int diaryId, int dayId) { DiaryResponse diary = GetDiary(diaryId); DayService dayService = new DayService(); DayResponse day = dayService.GetDay(dayId); DayResponse dayCopy = day; dayCopy.Date.AddHours(-day.Date.Hour); dayCopy.Date.AddMinutes(-day.Date.Minute); dayCopy.Date.AddSeconds(-day.Date.Second); dayCopy.Date.AddMilliseconds(-day.Date.Millisecond); while (dayCopy.Date.DayOfWeek != DayOfWeek.Monday) { dayCopy.Date = dayCopy.Date.AddDays(-1); } DateTime startOfTheWeek = dayCopy.Date; DateTime endOfTheWeek = dayCopy.Date.AddDays(6); List <DayResponse> days = diary.Days.Where(x => x.Date.Ticks >= startOfTheWeek.Ticks && x.Date.Ticks <= endOfTheWeek.Ticks).ToList(); List <ExerciseStatus> weekSummary = new List <ExerciseStatus>(); foreach (var singleDay in days) { foreach (var trainingUnit in singleDay.TrainingUnits) { foreach (var exercise in trainingUnit.ExerciseTrainings) { if (!weekSummary.Any(x => x.BodyPart == exercise.Exercise.BodyPart)) { ExerciseStatus exerciseStatus = new ExerciseStatus { BodyPart = exercise.Exercise.BodyPart, ExercisesToDo = BodyPartToDo[exercise.Exercise.BodyPart] }; weekSummary.Add(exerciseStatus); } else { weekSummary.FirstOrDefault(x => x.BodyPart == exercise.Exercise.BodyPart).ExercisesDone++; } } } } return(new ServiceResponse <WeekSummaryResponse>(new WeekSummaryResponse(startOfTheWeek.ToString(), endOfTheWeek.ToString(), weekSummary), HttpStatusCode.OK, "Week summary done successfully")); }
public Task <SwaggerResponse <DayResponse> > GetDayAsync(double?day, double?month, double?year) { var headers = new Dictionary <string, IEnumerable <string> >(); try { var userId = _httpContextAccessor.HttpContext.User.FindFirst(cl => cl.Type.Equals("id")).Value; var response = _unitOfWork.DayPunches.GetDay(userId, day, month, year); return(Task.FromResult(new SwaggerResponse <DayResponse>(StatusCodes.Status200OK, headers, response))); } catch (Exception exception) { var response = new DayResponse { Status = new OpResult { Success = false, Result = $"Failed to get day {day} punches" } }; return(HandleException <DayResponse>(exception, headers, response)); } }