Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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"));
        }
Esempio n. 4
0
        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));
            }
        }