Exemple #1
0
 public TrainingsModel(UserTraining training)
     : base()
 {
     this.Id = training.Training.Id;
     this.Text = training.Training.Text;
     this.Title = training.Training.Title;
 }
Exemple #2
0
        public async Task <ActionResult <UserTraining> > PostUserTraining(UserTraining userTraining)
        {
            var currentId = User.Claims.FirstOrDefault(el => el.Type == ClaimTypes.NameIdentifier)?.Value;

            if (currentId != userTraining.UserId && !User.IsInRole("admin"))
            {
                return(BadRequest());
            }

            var user = await _context.Users
                       .Include(el => el.UserDiseases)
                       .FirstAsync(el => el.Id == userTraining.UserId);

            var training = await _context.Training.FindAsync(userTraining.TrainingId);

            var trainingIndex = TrainingCalculator.CalculateExercise(user, training);

            userTraining.ExerciseIndex = trainingIndex;

            _context.UserTraining.Add(userTraining);
            await _context.SaveChangesAsync();

            userTraining.Training = null;
            return(Ok(userTraining));
        }
Exemple #3
0
 public async Task <IEnumerable <Exercise> > GetExercisesToDelete(UserTraining training)
 {
     return(await _trainingPlannerDbContext.Exercises
            .Where(c => c.UserTrainingId == training.Id)
            .Except(training.Exercises)
            .ToListAsync());
 }
Exemple #4
0
        public async Task <UserTraining> UpdateUserTraining(UserTraining training)
        {
            _trainingPlannerDbContext.Update(training);
            await _trainingPlannerDbContext.SaveChangesAsync();

            return(training);
        }
 public UserTrainingsModel(UserTraining train)
     : base()
 {
     this.UserId = train.UserId;
     this.TrainingId = train.TrainingId;
     this.DateCompleted = train.DateCompleted;
 }
Exemple #6
0
        public async Task <UserTraining> CreateUserTraining(UserTraining training)
        {
            await _trainingPlannerDbContext.UserTrainings.AddAsync(training);

            await _trainingPlannerDbContext.SaveChangesAsync();

            return(training);
        }
Exemple #7
0
        public void Remove(UserTraining userTraining)
        {
            dbUserTraining.Remove(userTraining);
            Training training = _trainingService.Find(userTraining.TrainingId);

            training.Free = true;

            _trainingService.Update(training);
        }
Exemple #8
0
        public void Create(UserTraining userTraining)
        {
            dbUserTraining.Add(userTraining);
            Training training = _trainingService.Find(userTraining.TrainingId);

            training.Free = false;

            _trainingService.Update(training);
        }
Exemple #9
0
 public IActionResult EditUserTraining(int id, UserTraining UserTraining)
 {
     try
     {
         _ITraining.UpdateUserTraining(UserTraining);
         return(RedirectToAction("UserTraining"));
     }
     catch
     {
         return(View());
     }
 }
Exemple #10
0
 public IActionResult DeleteUserTraining(int id, UserTraining UserTraining)
 {
     try
     {
         // TODO: Add update logic here
         _ITraining.DeleteUserTraining(UserTraining.Id);
         return(RedirectToAction("UserTraining"));
     }
     catch
     {
         return(View());
     }
 }
Exemple #11
0
        public async Task <ActionResult <UserTraining> > Calculate(UserTraining userTraining)
        {
            var user = await _context.Users
                       .Include(el => el.UserDiseases)
                       .FirstAsync(el => el.Id == userTraining.UserId);

            var training = await _context.Training.FindAsync(userTraining.TrainingId);

            var trainingIndex = TrainingCalculator.CalculateExercise(user, training);

            userTraining.ExerciseIndex = trainingIndex;

            userTraining.Training = null;
            return(Ok(userTraining));
        }
Exemple #12
0
        public async Task <Training> CreateTrainingAsync(Training training)
        {
            User user = await _context.Users.FirstOrDefaultAsync(x => x.Id == _authHelper.GetAuthenticatedUserId());

            UserTraining newUserTraining = new UserTraining
            {
                UserId   = user.Id,
                Training = training
            };

            _context.Entry(user).Context
            .Add(newUserTraining);
            await _context.SaveChangesAsync();

            return(newUserTraining.Training);
        }
        private async Task <Training> CreatePrivateTraining(int userId)
        {
            Training trainingModel = Factory.Training.GetModel(false);
            await Context.Training.AddAsync(trainingModel);

            await Context.SaveChangesAsync();

            UserTraining userTraining = new UserTraining
            {
                TrainingId = trainingModel.Id,
                UserId     = userId
            };
            await Context.UserTraining.AddAsync(userTraining);

            await Context.SaveChangesAsync();

            return(trainingModel);
        }
Exemple #14
0
        public IActionResult CreateUserTraining(UserTraining UserTraining)
        {
            try
            {
                // TODO: Add insert logic here

                if (ModelState.IsValid)
                {
                    _ITraining.InsertUserTraining(UserTraining);
                    return(RedirectToAction("UserTraining", new { UserId = UserTraining.UserId }));
                }
                return(View(UserTraining));
            }
            catch
            {
                return(View());
            }
        }
Exemple #15
0
        public async Task <IActionResult> PutUserTraining(int id, UserTraining userTraining)
        {
            var currentId = User.Claims.FirstOrDefault(el => el.Type == ClaimTypes.NameIdentifier)?.Value;

            if (currentId != userTraining.UserId && !User.IsInRole("admin"))
            {
                return(BadRequest());
            }
            if (id != userTraining.Id)
            {
                return(BadRequest());
            }


            _context.Entry(userTraining).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UserTrainingExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            // перерахунок рейтингу комлексу тренувань
            var training = await _context.Training.Include(el => el.UserTrainings)
                           .FirstAsync(el => el.Id == userTraining.TrainingId);

            training.Score = training.UserTrainings.Sum(el => el.Score) / training.UserTrainings.Count();

            _context.Update(training);
            await _context.SaveChangesAsync();

            return(NoContent());
        }
Exemple #16
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var training = await context.Trainings.FindAsync(request.Id);

                if (training == null)
                {
                    throw new RestException(HttpStatusCode.NotFound, new { training = "Not found" });
                }
                var user = await context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUserName());

                var buy = await context.UserTrainings.SingleOrDefaultAsync(x => x.TrainingId == training.TrainingId && x.UserFasserlyId == user.Id);

                if (buy != null)
                {
                    if (buy.IsOwner)
                    {
                        throw new RestException(HttpStatusCode.NotFound, new { training = "You cannot buy your own courses! " });
                    }
                    else
                    {
                        throw new RestException(HttpStatusCode.NotFound, new { training = "Already bought this course! " });
                    }
                }

                buy = new UserTraining
                {
                    UserFasserly = user,
                    Training     = training,
                    DateJoined   = DateTime.Now,
                    IsOwner      = false,
                };

                context.Add(buy);
                var success = await context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("Saving problem");
            }
        private async Task <Training> CreatePublicTraining(int userId = 0)
        {
            Training trainingModel = Factory.Training.GetModel(true);
            await Context.Training.AddAsync(trainingModel);

            await Context.SaveChangesAsync();

            if (userId > 0)
            {
                UserTraining userTraining = new UserTraining
                {
                    TrainingId = trainingModel.Id,
                    UserId     = userId
                };
                await Context.UserTraining.AddAsync(userTraining);

                await Context.SaveChangesAsync();
            }

            return(trainingModel);
        }
Exemple #18
0
        public async Task <IActionResult> Create([Bind("UserId,TrainingId")] UserTraining userTraining)
        {
            if (ModelState.IsValid)
            {
                _userTrainingService.Create(userTraining);

                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            //ViewData["TrainingId"] = new SelectList(_context.Trainings.Select(t => new SelectListItem
            //{ Text = t.Date.ToShortDateString() + " - " + t.Free.ToString(), Value = t.TrainingId.ToString()}).ToList());

            //ViewData["UserId"] = new SelectList(_context.Users.Select(u => new SelectListItem
            //{Text = u.Name + " - " + u.Address, Value = u.Id.ToString()}).ToList());

            ViewData["ErrorMessage"] = "Doslo je do greske.";


            return(View(userTraining));
        }
Exemple #19
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var user = await context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUserName());

                var cat = await context.Categories.SingleOrDefaultAsync(x => x.Label == request.Category);

                var training = new Training
                {
                    TrainingId     = request.TrainingId,
                    Title          = request.Title,
                    IsActive       = request.IsActive,
                    DateOfCreation = DateTime.Now,
                    Description    = request.Description,
                    Price          = Convert.ToDecimal(request.Price, new CultureInfo("en-US")),
                    Language       = request.Language,
                    Category       = cat,
                };

                context.Trainings.Add(training);

                var buy = new UserTraining
                {
                    UserFasserly = user,
                    Training     = training,
                    DateJoined   = DateTime.Now,
                    IsOwner      = true,
                };

                context.Add(buy);

                var success = await context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }
                throw new Exception("Saving problem");
            }
Exemple #20
0
        public int UpdateUserTraining(UserTraining UserTraining)
        {
            using (SqlConnection con = new SqlConnection(_ConnectionString.Value.ConnectionString))
            {
                con.Open();
                SqlTransaction sqltrans = con.BeginTransaction();
                var            param    = new DynamicParameters();
                param.Add("@Id", UserTraining.Id);
                param.Add("@UserId", UserTraining.UserId);
                param.Add("@TrainingId", UserTraining.TrainingId);
                var result = con.Execute("InsertUpdateSingleUserTraining", param, sqltrans, 0, System.Data.CommandType.StoredProcedure);

                if (result > 0)
                {
                    sqltrans.Commit();
                }
                else
                {
                    sqltrans.Rollback();
                }
                return(result);
            }
        }
Exemple #21
0
        public async Task <UserTrainingGroupedDTO> GenerateAndGetUserTrainingAsync(int userId)
        {
            var lastNotPassedUserTraining = await _userTrainingRepository.Collection.Include(s => s.Exercises).Include(s => s.Exercises.Select(f => f.Exercise)).FirstOrDefaultAsync(f => f.UserId == userId && !f.IsPassed);

            if (lastNotPassedUserTraining != null)
            {
                return(Mapper.Map <UserTraining, UserTrainingGroupedDTO>(lastNotPassedUserTraining));
            }
            var userProfessionId = await _settingsRepository.Collection.Where(s => s.Id == userId).Select(f => f.ProfessionId).FirstOrDefaultAsync();

            if (!userProfessionId.HasValue)
            {
                throw new Exception("User has no setted up profession! Please, set up profession first!");
            }
            var criteriasIds = await _professionCriteriaRepository.Collection.OrderByDescending(s => s.Weight).Take(5).Select(s => s.CriteriaId).ToListAsync();

            var exercises = await _exercisesRepository.Collection.IncludeFilter(s => s.ExerciseCriterias.Where(ec => criteriasIds.Any(cid => ec.CriteriaId == cid))).Where(s => s.ExerciseCriterias.Any(ec => criteriasIds.Any(cid => cid == ec.CriteriaId))).ToListAsync();

            var exercisesFiltering = exercises.OrderByDescending(s => s.ExerciseCriterias.Sum(f => f.Weight)).Take(5).ToList();
            var userTraining       = new UserTraining
            {
                Created   = DateTime.UtcNow,
                UserId    = userId,
                Exercises = exercisesFiltering.Select(ex => new UserExercise
                {
                    ExerciseId     = ex.Id,
                    CountOfRepeats = 10
                }).ToList()
            };

            _userTrainingRepository.Insert(userTraining);
            await _unitOfWork.SaveChangesAsync();

            lastNotPassedUserTraining = await _userTrainingRepository.Collection.Include(s => s.Exercises).Include(s => s.Exercises.Select(f => f.Exercise)).FirstOrDefaultAsync(f => f.UserId == userId && !f.IsPassed);

            return(Mapper.Map <UserTraining, UserTrainingGroupedDTO>(lastNotPassedUserTraining));
        }
 public void Remove(UserTraining userTraining)
 {
     _context.UserTrainings.Remove(userTraining);
 }
Exemple #23
0
        private async Task RemoveExercises(UserTraining mappedTraining)
        {
            var exercisesToDelete = await _userTrainingRepository.GetExercisesToDelete(mappedTraining);

            await _userTrainingRepository.RemoveExercises(exercisesToDelete, false);
        }
Exemple #24
0
 public void Update(UserTraining userTraining)
 {
     dbUserTraining.Update(userTraining);
 }
Exemple #25
0
 public void Add(UserTraining userTraining)
 {
     dbUserTraining.Add(userTraining);
 }
Exemple #26
0
 public async Task DeleteUserTraining(UserTraining training)
 {
     _trainingPlannerDbContext.UserTrainings.Remove(training);
     await _trainingPlannerDbContext.SaveChangesAsync();
 }
 public void Update(UserTraining userTraining)
 {
     _context.UserTrainings.Update(userTraining);
 }
        public HttpResponseMessage MarkTrainingCompleted(JObject obj)
        {
            var msg = PerformOperation(() =>
            {
                string sessionId = obj["sessionId"].Value<string>();
                int trainingId = obj["trainingId"].Value<int>();
                ValidateSessionId(sessionId);
                User currentUser = db.Users.SingleOrDefault(x => x.SessionId == sessionId);

                Training tempTraining = db.Trainings.SingleOrDefault(x => x.Id == trainingId);
                if (tempTraining == null)
                {
                    throw BuildHttpResponseException("No such training ID", "ERR_ID");
                }
                UserTraining tempUserTraining = db.UserTrainings.SingleOrDefault(x => x.TrainingId == trainingId && x.UserId == currentUser.Id);
                if (tempUserTraining != null)
                {
                    throw BuildHttpResponseException("The selected training has already been marked as trained", "ERR_ID");
                }
                UserTraining ut = new UserTraining()
                {
                    UserId = currentUser.Id,
                    TrainingId = trainingId,
                    DateCompleted = DateTime.Now
                };
                db.UserTrainings.Add(ut);
                db.SaveChanges();
                return "Success";
            });
            return msg;
        }
 public void Add(UserTraining userTraining)
 {
     _context.UserTrainings.Add(userTraining);
 }