예제 #1
0
        public void InputWeightData(WeightViewModel model)
        {
            InputModel dataMappedModel = Mapper.Map <WeightViewModel, InputModel>(model);

            dataMappedModel.user = _user;
            AddModel(dataMappedModel);
        }
예제 #2
0
        protected async Task SaveWeight(WeightViewModel model)
        {
            if (model != null && model.Members != null)
            {
                foreach (var member in model.Members)
                {
                    var weight = db.Weights.Where(w => w.Tag == member.Tag).SingleOrDefault();
                    if (weight == null)
                    {
                        weight = new Weight {
                            Tag = member.Tag, WarWeight = member.Weight, InWar = member.InWar, LastModified = DateTime.UtcNow
                        };
                        db.Weights.Add(weight);
                    }
                    else
                    {
                        if (weight.WarWeight != member.Weight || weight.InWar != member.InWar)
                        {
                            weight.WarWeight    = member.Weight;
                            weight.InWar        = member.InWar;
                            weight.LastModified = DateTime.UtcNow;
                        }
                    }
                }

                await db.SaveChangesAsync();
            }
        }
예제 #3
0
        public async Task <IActionResult> Create([Bind("Date,Weight,Comment")] WeightViewModel weightViewModel)
        {
            if (ModelState.IsValid)
            {
                // First save weight to table
                WeightModel weight = new WeightModel()
                {
                    UserName = User.Identity.GetUserId(),
                    Date     = weightViewModel.Date,
                    Weight   = weightViewModel.Weight
                };
                _context.Add(weight);
                await _context.SaveChangesAsync();

                // Check if comment is added and save to database
                if (weightViewModel.Comment != null)
                {
                    int          lastWeightId = _context.Weights.Max(item => item.Id);
                    CommentModel comment      = new CommentModel()
                    {
                        WeightModelId = lastWeightId,
                        Comment       = weightViewModel.Comment
                    };
                    _context.Add(comment);
                    await _context.SaveChangesAsync();
                }

                return(RedirectToAction(nameof(Index)));
            }
            return(View(weightViewModel));
        }
예제 #4
0
        public async Task <IActionResult> Post([FromBody] WeightViewModel weightViewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var weightEntry = _mapper.Map <WeightViewModel, WeightEntry>(weightViewModel);

                    var currentUser = await _userManager.FindByNameAsync(User.Identity.Name);

                    weightEntry.User = currentUser;

                    _arthwindsRepository.AddEntity(weightEntry);
                    if (_arthwindsRepository.SaveAll())
                    {
                        return(Created($"/api/weights/{weightEntry.Id}", weightEntry));
                    }
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Failed to save new weight: {ex}");
            }

            return(BadRequest("Failed to save new weight"));
        }
예제 #5
0
        public ActionResult AddWeight(WeightViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View("Weight", viewModel));
            }

            Metric w = Metric.CreateMetric(User.Identity.GetUserId(), Infrastructure.enums.MetricType.Weight, viewModel.GetRecordedDateTime(), viewModel.Weight, true); _unitOfWork.Metrics.AddOrUpdateMetric(w);

            _unitOfWork.Metrics.AddOrUpdateMetric(w);

            if (viewModel.Bodyfat != null)
            {
                Metric bf = Metric.CreateMetric(User.Identity.GetUserId(), Infrastructure.enums.MetricType.BodyFat, viewModel.GetRecordedDateTime(), viewModel.Bodyfat.Value, true);
                _unitOfWork.Metrics.AddOrUpdateMetric(bf);
            }

            _unitOfWork.Complete();

            // as weight details have changed we need to refresh weights recorded against activities
            ActivityWeight aw = new ActivityWeight(User.Identity.GetUserId());

            aw.UpdateActivityWeight();

            if (viewModel.MoveOntoNextDay)
            {
                WeightViewModel vm = new WeightViewModel(viewModel.GetRecordedDateTime().AddDays(1));
                vm.MoveOntoNextDay = true;
                return(RedirectToAction("Weight", vm));
            }

            return(RedirectToAction("Index", "Home"));
        }
예제 #6
0
 public IActionResult Index(WeightViewModel weightViewModel)
 {
     if (ModelState.IsValid)
     {
         ViewBag.UserMessage = "Weight added";
         ModelState.Clear();
     }
     return(View());
 }
예제 #7
0
 public ActionResult Weight(WeightViewModel model)
 {
     if (ModelState.IsValid)
     {
         service.InputWeightData(model);
         return(RedirectToAction("Index", "Input"));
     }
     return(View(model));
 }
예제 #8
0
 public IActionResult AddWeight([FromBody] WeightViewModel model)
 {
     if (ModelState.IsValid)
     {
         var weight = Mapper.Map <WeightViewModel, Weight>(model);
         weight.CreatedDateUtc      = System.DateTime.UtcNow;
         weight.LastModifiedDateUtc = System.DateTime.UtcNow;
         weight.LastModifiedBy      = 1;
         _weightService.AddWeight(weight);
     }
     return(new HttpStatusCodeResult(200));
 }
예제 #9
0
        public async Task <IActionResult> Edit(int id, [Bind("WeightId,Date,Weight,Comment")] WeightViewModel weightViewModel)
        {
            if (id != weightViewModel.WeightId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    // First update Weights tables
                    var weightModel = await _context.Weights.FirstOrDefaultAsync(m => m.Id == id);

                    weightModel.Date   = weightViewModel.Date;
                    weightModel.Weight = weightViewModel.Weight;
                    _context.Update(weightModel);

                    var commentModel = await _context.Comments.FirstOrDefaultAsync(m => m.WeightModelId == id);

                    // If prior comment exist, update else create new
                    if (commentModel != null)
                    {
                        commentModel.Comment = weightViewModel.Comment;
                        _context.Update(commentModel);
                    }
                    else
                    {
                        CommentModel comment = new CommentModel()
                        {
                            WeightModelId = id,
                            Comment       = weightViewModel.Comment
                        };
                        _context.Add(comment);
                    }
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!WeightModelExists(weightViewModel.WeightId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(weightViewModel));
        }
예제 #10
0
        public ActionResult GoalsIndicator()
        {
            WeightViewModel weightVM        = new WeightViewModel();
            var             userName        = User.Identity.GetUserName();
            var             user            = _context.Users.Where(x => x.UserName == userName).First();
            var             beginingWeights = _context.ProfileHistory.Where(x => x.UserId == user.Id).First();
            List <string>   listItemAdd     = new List <string>()
            {
                beginingWeights.Weight
            };

            weightVM.Weight = listItemAdd;
            weightVM.User   = user;

            return(View(weightVM));
        }
예제 #11
0
        public EventsOfficeHoursModel ParseEvents(List <ChannelEvent> channelEvents, DateTime startDateTime, DateTime endDateTime)
        {
            var dto = new DateDto();

            var model = new EventsOfficeHoursModel
            {
                Day             = startDateTime.DayOfWeek,
                StartDateTime   = startDateTime,
                EndDateTime     = endDateTime,
                AmountOfMotions = new List <WeightViewModel>(),
                Length          = 0
            };

            model.Length = _context.ChannelEvent
                           .Count(
                p => p.DateTime > model.StartDateTime &&
                p.DateTime < model.EndDateTime
                );

            const int interval = 60 * 5; // 5 minutes
            var       i        = dto.GetUnixTime(startDateTime);

            while (i <= dto.GetUnixTime(endDateTime))
            {
                var eventItem = new WeightViewModel
                {
                    StartDateTime = dto.UnixTimeToDateTime(i),
                    EndDateTime   = dto.UnixTimeToDateTime(i + interval)
                };
                eventItem.LabelUtc = eventItem.StartDateTime.ToString("HH:mm");
                eventItem.Label    = dto.UtcDateTimeToAmsterdamDateTime(eventItem.StartDateTime).ToString("HH:mm");

                var weightSum = channelEvents
                                .Where(p =>
                                       p.DateTime > eventItem.StartDateTime &&
                                       p.DateTime < eventItem.EndDateTime)
                                .Select(p => p.Weight).Sum();

                eventItem.Weight = weightSum;
                model.AmountOfMotions.Add(eventItem);
                i += interval;
            }
            return(model);
        }
예제 #12
0
        public ActionResult WeightChart()
        {
            WeightViewModel  weightVM = new WeightViewModel();
            var              userName = User.Identity.GetUserName();
            var              user     = _context.Users.Where(x => x.UserName == userName).First();
            var              weights  = _context.ProfileHistory.Where(x => x.UserId == user.Id).ToList();
            List <string>    weight   = new List <string>();
            List <DateTime?> dates    = new List <DateTime?>();

            foreach (var item in weights)
            {
                dates.Add(item.DateOfLog);
                weight.Add(item.Weight);
            }

            weightVM.Weight    = weight;
            weightVM.DateAdded = dates;

            return(View(weightVM));
        }
예제 #13
0
        //
        // GET: /Front/Program/Weight/5

        public ActionResult Weight(int id = 0)
        {
            Program program = db.Programs.Find(id);

            if (program == null)
            {
                return(HttpNotFound());
            }

            var weights = program.Weights.OrderByDescending(w => w.date).Take(15);
            var vm      = new WeightViewModel();

            vm.Program   = program;
            vm.Weights   = weights.ToList();
            vm.UserId    = program.UserId;
            vm.ProgramId = program.ProgramId;
            vm.date      = DateTime.Now;

            return(View(vm));
        }
예제 #14
0
        public ActionResult Weight(Weight weight, int id = 0)
        {
            if (ModelState.IsValid)
            {
                db.Weights.Add(weight);
                db.SaveChanges();
                return(RedirectToAction("Weight"));
            }

            Program program = db.Programs.Find(id);
            var     weights = program.Weights.OrderByDescending(w => w.date).Take(15);
            var     vm      = new WeightViewModel();

            vm.Program   = program;
            vm.Weights   = weights.ToList();
            vm.UserId    = program.UserId;
            vm.ProgramId = program.ProgramId;
            vm.date      = DateTime.Now;

            return(View(vm));
        }
예제 #15
0
        public async Task <IActionResult> Weight(string id, WeightViewModel model)
        {
            logger.LogInformation("Weight.Post {0}", id);

            var tag = Utils.LinkIdToTag(id);

            if (model.Command != null)
            {
                await SaveWeight(model);

                if (model.Command.Equals("submit", StringComparison.OrdinalIgnoreCase))
                {
                    var model2 = WeightData(id, model.WarID);
                    model2.WeightSubmitQueued = true;
                    await QueueWeightSubmit(model2);

                    return(View(model2));
                }
            }

            return(Weight(id, model.WarID));
        }
예제 #16
0
        protected async Task QueueWeightSubmit(WeightViewModel weight)
        {
            var submit = new SubmitRequest
            {
                ClanTag  = weight.ClanTag,
                ClanName = weight.ClanName,
                Mode     = "submit",
                Members  = new List <SubmitMember>()
            };

            //Read clan name from Proud FWA List
            var clans = await clanLoader.Load(Constants.LIST_FWA);

            if (clans != null)
            {
                var clan = clans.Where(c => c.Tag == weight.ClanTag).SingleOrDefault();
                if (clan != null)
                {
                    submit.ClanName = clan.Name;
                }
            }

            var position = 0;

            foreach (var m in weight.Members)
            {
                submit.Members.Add(new SubmitMember
                {
                    Position = ++position,
                    Tag      = m.Tag,
                    Name     = m.Name,
                    TownHall = m.TownHallLevel,
                    Weight   = m.Weight
                });
            }

            submitService.Queue(submit);
        }
예제 #17
0
        public JsonResult GetWeightData(string period)
        {
            List <WeightViewModel> model = WeightViewModel.GetWeightData(period);

            return(Json(new { data = model }, JsonRequestBehavior.AllowGet));
        }
예제 #18
0
        protected WeightViewModel WeightData(string id, long WarID)
        {
            var tag = Utils.LinkIdToTag(id);

            var clan = db.Clans.Where(c => c.Tag == tag).SingleOrDefault();

            var warEndTime = Utils.WarIdToTime(WarID);

            var model = new WeightViewModel {
                ClanTag = clan.Tag, ClanLink = clan.LinkID, ClanName = clan.Name, ClanBadge = clan.BadgeUrl, WarID = WarID
            };

            var result = db.WeightResults.SingleOrDefault(r => r.Tag == tag);

            if (result != null)
            {
                model.WeightSubmitDate    = result.Timestamp;
                model.PendingWeightSubmit = result.PendingResult;
            }

            model.Wars = new List <WeightWarModel>();

            foreach (var war1 in this.GetDetailedWars(tag).Reverse())
            {
                model.Wars.Add(new WeightWarModel {
                    ID = Utils.WarTimeToId(war1.EndTime), OpponentName = war1.OpponentName
                });
            }

            var war = db.Wars.Where(w => w.ClanTag == tag && w.EndTime == warEndTime).SingleOrDefault();

            if (war == null) //All clan members
            {
                if (model.Wars != null && model.Wars.Count > 0)
                {
                    model.OpponentName = model.Wars.First().OpponentName;
                }

                var members = db.Members.Where(m => m.ClanTag == tag).OrderBy(m => m.ClanRank).ToList();

                var weights = (from m in db.Members where m.ClanTag == tag join w in db.Weights on m.Tag equals w.Tag select w).ToDictionary(w => w.Tag);

                var thlevels = (from p in db.Players join m in db.Members on p.Tag equals m.Tag where m.ClanTag == tag select new { p.Tag, p.TownHallLevel }).ToDictionary(p => p.Tag, t => t.TownHallLevel);

                var memberWeights = new List <MemberWeightModel>();

                foreach (var member in members)
                {
                    var memberWeight = new MemberWeightModel {
                        Tag = member.Tag, Name = member.Name
                    };
                    if (weights.TryGetValue(member.Tag, out Weight weight))
                    {
                        memberWeight.InWar  = weight.InWar;
                        memberWeight.Weight = weight.WarWeight;
                    }
                    if (thlevels.TryGetValue(member.Tag, out int thlevel))
                    {
                        memberWeight.TownHallLevel = thlevel;
                    }
                    memberWeights.Add(memberWeight);
                }

                model.Members = memberWeights.OrderByDescending(w => w.Weight + w.TownHallLevel).ToList();
            }
            else //clan members of war
            {
                model.OpponentTag  = war.OpponentTag;
                model.OpponentName = war.OpponentName;

                var members = db.WarMembers.Where(m => m.WarID == war.ID && m.IsOpponent == false).OrderBy(m => m.MapPosition).ToList();

                var weights = (from m in db.WarMembers join w in db.Weights on m.Tag equals w.Tag where m.WarID == war.ID select w).ToDictionary(w => w.Tag);

                var memberWeights = new List <MemberWeightModel>();

                foreach (var member in members)
                {
                    var memberWeight = new MemberWeightModel {
                        Tag = member.Tag, Name = member.Name, TownHallLevel = member.TownHallLevel, InWar = true
                    };
                    if (weights.TryGetValue(member.Tag, out Weight weight))
                    {
                        memberWeight.Weight = weight.WarWeight;
                    }
                    memberWeights.Add(memberWeight);
                }

                model.Members = memberWeights.ToList();
            }

            var clanWeight  = 0;
            var memberCount = 0;
            var thCount     = 0;
            var comparisons = new Dictionary <int, WeightComparison>();

            foreach (var member in model.Members.OrderByDescending(m => m.Weight))
            {
                if (member.Weight > 0 && member.InWar == true)
                {
                    memberCount++;
                    clanWeight += member.Weight;
                    thCount    += member.TownHallLevel;
                    comparisons.Add(memberCount, new WeightComparison {
                        Position = memberCount, Weight = member.Weight, Max = int.MinValue, Min = int.MaxValue
                    });
                }
            }

            if (memberCount == Constants.WAR_SIZE1 || memberCount == Constants.WAR_SIZE2)
            {
                var maxWeight = clanWeight + Constants.WEIGHT_COMPARE; //30000
                var minWeight = clanWeight - Constants.WEIGHT_COMPARE;
                var results   = db.WeightResults.Where(w => w.Weight >= minWeight && w.Weight <= maxWeight && w.TeamSize == memberCount && w.Tag != tag).ToList();

                model.ComparisonSampleSize = results.Count;
                //double sumOfSquares = 0D;
                double sumOfAbs = 0D;

                if (results.Count > 0)
                {
                    foreach (var res in results)
                    {
                        for (var i = 1; i <= memberCount; i++)
                        {
                            if (comparisons.TryGetValue(i, out WeightComparison comparison))
                            {
                                var weight = res.GetBase(i);
                                comparison.Average += weight;
                                if (weight > comparison.Max)
                                {
                                    comparison.Max = weight;
                                }
                                if (weight < comparison.Min)
                                {
                                    comparison.Min = weight;
                                }
                            }
                        }
                    }

                    model.Comparisons = new List <WeightComparison>();

                    for (var i = 1; i <= memberCount; i++)
                    {
                        if (comparisons.TryGetValue(i, out WeightComparison comparison))
                        {
                            comparison.Average /= results.Count;
                            comparison.Average /= 1000;
                            comparison.Average  = Math.Round(comparison.Average, 1);
                            comparison.Weight  /= 1000;
                            comparison.Min     /= 1000;
                            comparison.Max     /= 1000;
                            model.Comparisons.Add(comparison);
                            var diff = comparison.Weight - comparison.Average;
                            //sumOfSquares += diff * diff;
                            sumOfAbs += Math.Abs(diff);
                        }
                    }
                }

                //model.ComparisonDeviation =  (int)(Math.Sqrt(sumOfSquares) / memberCount * 1000);
                model.ComparisonDeviation = (int)(sumOfAbs / memberCount * 1000);
            }

            return(model);
        }
예제 #19
0
 public WeightPage(WeightViewModel viewModel)
 {
     InitializeComponent();
     BindingContext = viewModel;
 }