Exemplo n.º 1
0
        public async Task <long> CreateFeedEvent(FeedEvent feedEvent)
        {
            feedEvent = _feedEventRepository.Create(feedEvent);
            await _unit.Commit();

            return(feedEvent.Id);
        }
Exemplo n.º 2
0
        // PUT api/mfeedevent/5
        public IHttpActionResult PutFeedEvent(long id, FeedEvent feedEvent)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != feedEvent.Id)
            {
                return(BadRequest());
            }

            try
            {
                _feedEventService.UpdateFeedEvent(feedEvent);
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FeedEventExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Exemplo n.º 3
0
        public async Task <IHttpActionResult> GetFeedEvent(long id)
        {
            FeedEvent feedEvent = await _feedEventService.FindFeedEvent(id);

            if (feedEvent == null)
            {
                return(NotFound());
            }

            return(Ok(feedEvent));
        }
Exemplo n.º 4
0
        public async Task <long> GenerateFeedEvent <T>(T entity)
        {
            var type    = entity.GetType();
            var userId  = (string)GetProperty(type, "UserId", entity);
            var eventId = (long)GetProperty(type, "Id", entity);
            var e       = new FeedEvent {
                EventId = eventId, UserId = userId
            };

            if (!(await ValidFeedEvent(e, type, entity)))
            {
                if (!(await ValidFeedEvent(e, type.BaseType, entity)))
                {
                    throw new Exception("not valid feed event");
                }
            }
            _feedEventRepository.Create(e);
            return(e.Id);
        }
Exemplo n.º 5
0
        public static IActionResult FeedPet(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = "feed/{pet_id}")] HttpRequest req, ILogger log, string pet_id)
        {
            var feedEvent = new FeedEvent()
            {
                amount = 1,
                um     = "cup"
            };

            if (household.pets.Count > 0)
            {
                var pet = household.pets.FirstOrDefault(x => x.id == Guid.Parse(pet_id));
                if (pet != null)
                {
                    pet.events.Add(feedEvent);
                }
                else
                {
                    return(new NotFoundObjectResult("No pet with id = " + pet_id + " found!"));
                }
            }
            return(new OkObjectResult(feedEvent));
        }
Exemplo n.º 6
0
        private async Task <bool> ValidFeedEvent <T>(FeedEvent e, Type type, T entity)
        {
            if (type == typeof(Activity))
            {
                e.Type        = EventType.Activity;
                e.Date        = (DateTime)GetProperty(type, "StartTime", entity);
                e.Description = string.Format("Completed {0:0.00} minutes of {1}", (double)GetProperty(type, "Duration", entity) / 60, (string)GetProperty(type, "Name", entity));
            }
            else if (type == typeof(UserBadge))
            {
                e.Type = EventType.Badge;
                e.Date = DateTime.UtcNow.LocalTime();
                var badge = await _badgeRepository.GetById((long)GetProperty(type, "BadgeId", entity));

                e.Description = string.Format("Earned the {0} badge", badge.Name);
            }
            else if (type == typeof(Food))
            {
                e.Type        = EventType.Food;
                e.Date        = (DateTime)GetProperty(type, "Time", entity);
                e.Description = string.Format("Ate {0}", (string)GetProperty(type, "FoodName", entity));
            }
            else if (type == typeof(Goal))
            {
                var goalType  = (GoalType)GetProperty(type, "Type", entity);
                var timeFrame = (TimeFrame)GetProperty(type, "TimeFrame", entity);
                var progress  = (double)GetProperty(type, "Progress", entity);
                var completed = (bool)GetProperty(type, "Completed", entity);
                Dictionary <GoalType, string> units = new Dictionary <GoalType, string>()
                {
                    { GoalType.Distance, "miles" },
                    { GoalType.Duration, "minutes" },
                    { GoalType.Steps, "steps" }
                };
                var target = (double)GetProperty(type, "Target", entity);
                if (goalType == GoalType.Duration)
                {
                    target /= 60;
                }
                if (progress < 1)
                {
                    e.Type        = EventType.GoalSet;
                    e.Date        = (DateTime)GetProperty(type, "SetDate", entity);
                    e.Description = string.Format("Set a new {0} {1} goal:  {2} {3}", timeFrame, goalType, target, units[goalType]);
                }
                else if (!completed)
                {
                    e.Type        = EventType.GoalAchieved;
                    e.Date        = DateTime.UtcNow.LocalTime();
                    e.Description = string.Format("Achieved a {0} {1} goal:  {2} {3}", timeFrame, goalType, target, units[goalType]);
                }
            }
            else if (type == typeof(Membership))
            {
                e.EventId = (long)GetProperty(type, "GroupId", entity);
                e.Date    = DateTime.UtcNow.LocalTime();
                var status = (Status)GetProperty(type, "Status", entity);
                var group  = await _groupRepository.GetById((long)GetProperty(type, "GroupId", entity));

                if (status == Status.Member || status == Status.Admin)
                {
                    e.Type        = EventType.GroupJoin;
                    e.Description = string.Format("Joined {0}", group.GroupName);
                }
                else if (status == Status.Left)
                {
                    e.Type        = EventType.GroupLeave;
                    e.Description = string.Format("Left {0}", group.GroupName);
                }
            }
            else if (type == typeof(UserMood))
            {
                e.Type = EventType.Mood;
                e.Date = (DateTime)GetProperty(type, "Time", entity);
                var mood = await _moodRepository.GetById((long)GetProperty(type, "MoodId", entity));

                e.Description = string.Format("Feeling {0}", mood.Type);
            }
            else if (type == typeof(EndOfDayReport))
            {
                e.Type = EventType.EndOfDay;
                var date = (DateTime)GetProperty(type, "Date", entity);
                e.Date        = date;
                e.Description = string.Format("End of Day Report for {0}", date.ToLocalTime().ToShortDateString());
            }
            else
            {
                return(false);
            }
            return(true);
        }
Exemplo n.º 7
0
 public async Task UpdateFeedEvent(FeedEvent feedEvent)
 {
     _feedEventRepository.Update(feedEvent);
     await _unit.Commit();
 }
        private void OnFeed(EntityUid uid, SharedBodyComponent body, FeedEvent args)
        {
            if (args.Food.Deleted)
            {
                return;
            }

            args.Food.CancelToken = null;

            if (!_bodySystem.TryGetComponentsOnMechanisms <StomachComponent>(uid, out var stomachs, body))
            {
                return;
            }

            var transferAmount = args.Food.TransferAmount != null
                ? FixedPoint2.Min((FixedPoint2)args.Food.TransferAmount, args.FoodSolution.CurrentVolume)
                : args.FoodSolution.CurrentVolume;

            var split        = _solutionContainerSystem.SplitSolution((args.Food).Owner, args.FoodSolution, transferAmount);
            var firstStomach = stomachs.FirstOrNull(
                stomach => _stomachSystem.CanTransferSolution((stomach.Comp).Owner, split));

            var forceFeed = uid != args.User;

            // No stomach so just popup a message that they can't eat.
            if (firstStomach == null)
            {
                _solutionContainerSystem.TryAddSolution(uid, args.FoodSolution, split);
                _popupSystem.PopupEntity(
                    forceFeed ?
                    Loc.GetString("food-system-you-cannot-eat-any-more-other") :
                    Loc.GetString("food-system-you-cannot-eat-any-more")
                    , uid, Filter.Entities(args.User));
                return;
            }

            split.DoEntityReaction(uid, ReactionMethod.Ingestion);
            _stomachSystem.TryTransferSolution(firstStomach.Value.Comp.Owner, split, firstStomach.Value.Comp);

            if (forceFeed)
            {
                EntityManager.TryGetComponent(uid, out MetaDataComponent? targetMeta);
                var targetName = targetMeta?.EntityName ?? string.Empty;

                EntityManager.TryGetComponent(args.User, out MetaDataComponent? userMeta);
                var userName = userMeta?.EntityName ?? string.Empty;

                _popupSystem.PopupEntity(Loc.GetString("food-system-force-feed-success", ("user", userName)),
                                         uid, Filter.Entities(uid));

                _popupSystem.PopupEntity(Loc.GetString("food-system-force-feed-success-user", ("target", targetName)),
                                         args.User, Filter.Entities(args.User));
            }
            else
            {
                _popupSystem.PopupEntity(Loc.GetString(args.Food.EatMessage, ("food", args.Food.Owner)), args.User, Filter.Entities(args.User));
            }

            SoundSystem.Play(Filter.Pvs(uid), args.Food.UseSound.GetSound(), uid, AudioParams.Default.WithVolume(-1f));

            // Try to break all used utensils
            foreach (var utensil in args.Utensils)
            {
                _utensilSystem.TryBreak((utensil).Owner, args.User);
            }

            if (args.Food.UsesRemaining > 0)
            {
                return;
            }

            if (string.IsNullOrEmpty(args.Food.TrashPrototype))
            {
                EntityManager.QueueDeleteEntity(args.Food.Owner);
            }
            else
            {
                DeleteAndSpawnTrash(args.Food, args.User);
            }
        }
Exemplo n.º 9
0
    IEnumerator GetNewsFeed(WWW www)
    {
        yield return(www);

        if (string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.text);
            List <FeedEvent> newEvents = JsonConvert.DeserializeObject <List <FeedEvent> >(www.text);
            if (events.Count > 0)
            {
                GameManager.me.feed = true;
                for (int i = newEvents.Count - 1; i >= 0; i++)
                {
                    FeedEvent e = newEvents[i];
                    if (e.EventId > events[0].EventId)
                    {
                        events.Insert(0, e);
                    }
                }
            }
            else
            {
                events.AddRange(newEvents);
            }

            RectTransform newParent = transform.GetChild(0) as RectTransform;
            int           count     = newParent.childCount;
            for (int i = 0; i < count; i++)
            {
                Destroy(newParent.GetChild(0)); //wiping the children to construct a new feed
            }
            int   n      = 0;
            float height = (feedItemPrefab.transform as RectTransform).sizeDelta.y;
            newParent.sizeDelta = new Vector2(Screen.width, (events.Count - 1) * height);
            float offset = (events.Count - 1) * height / 2;
            newParent.localPosition = new Vector3(0, -offset, 0);
            foreach (FeedEvent e in events)
            {
                GameObject item = (GameObject)GameObject.Instantiate(feedItemPrefab);

                //loop through Stars - adding them to a collection array
                //initially set the number of stars the photo has (if the user already voted on it)
                Transform   stargroup = item.transform.Find("Stars");
                Transform[] Stars     = new Transform[6];
                for (int s = 1; s < 6; s++)
                {
                    Stars[s] = stargroup.transform.Find("Star" + s);
                }

                string     eventType = e.Type.Trim();
                Transform  image2    = item.transform.Find("Image-Mask");//.GetComponent<Image>();
                Image      image     = image2.transform.Find("Image").GetComponent <Image>();
                GameObject avg       = stargroup.Find("avg").gameObject;
                if (eventType == "Photo")
                {
                    //store imageID to a gameObject's name
                    GameObject imageID = image2.transform.Find("imageID").gameObject;
                    imageID.name = "photoID_" + e.TableItemId.ToString();
                    GetRating(e.TableItemId, avg, Stars);

                    image.enabled = false;

                    Debug.LogWarning("loading this photo: " + photosUrl + e.TableItemId);
                    WWW request = new WWW(photosUrl + e.TableItemId);
                    StartCoroutine(GetPhoto(request, image));
                }
                else
                {
                    Texture2D texture = new Texture2D(1, 1);
                    texture.SetPixels(new Color[] { Color.black });
                    texture.Apply();
                    image.sprite = Sprite.Create(texture, new Rect(0, 0, 1, 1), new Vector2(1, 1));
                }

                Text[] texts = item.GetComponentsInChildren <Text>();
                foreach (Text t in texts)
                {
                    if (t.gameObject.name == "Name")
                    {
                        WWW request = new WWW(userUrl + e.UserId);
                        StartCoroutine(GetUserName(request, t));
                    }

                    else if (t.gameObject.name == "Description")
                    {
                        if (eventType == "Photo")
                        {
                            t.text = "Uploaded a new photo!";
                        }
                        else if (eventType == "Friend")
                        {
                            WWW request = new WWW(friendsUrl + e.TableItemId);
                            StartCoroutine(GetFriendshipInfo(request, e.UserId, t, image));
                        }
                        else if (eventType == "Challenge")
                        {
                            WWW request = new WWW(challengeUrl + e.TableItemId);


                            //chage the separator
                            Transform sep2      = item.transform.Find("Separator-Group");
                            Transform separator = sep2.transform.Find("image");

                            //chage the difficulity tab
                            Transform diffTag2 = item.transform.Find("DifficultyGroup");
                            Transform diffTag  = diffTag2.transform.Find("diffTagImg");

                            Transform diffText = diffTag2.transform.Find("diffTagText");


                            StartCoroutine(GetChallengeInfo(request, t, separator, diffTag, diffText));



                            request = new WWW(completedChallengeUrl + e.UserId);
                            StartCoroutine(GetCompletedChallengePhoto(request, e.TableItemId, image, Stars, avg));
                        }
                    }
                }



                RectTransform otherT    = item.transform as RectTransform;
                Vector2       origSize  = otherT.sizeDelta;
                Vector3       origScale = otherT.localScale;
                otherT.SetParent(newParent, true);
                otherT.localPosition = new Vector3(0, offset - height / 2, 0);
                otherT.sizeDelta     = origSize;
                otherT.localScale    = origScale;
                offset += -(origSize.y * 6 / 7);
            }
        }
        else
        {
            Debug.LogError(www.error);
            Debug.Log(www.text);
        }

        //if (GameManager.me.feed == false)
        //{
        //    GameManager.me.emptyFeed.SetActive(true);
        //    GameManager.me.homePanel.SetActive(false);
        //}
    }