示例#1
0
        public ActionResult DeleteImage(string _ImageID)
        {
            var ImageID    = GenericLogic.GetInt(_ImageID);
            var ThisUserID = "";

            if (CurrentUser() != null)
            {
                ThisUserID = CurrentUser().Id;
            }

            var Img = db.Images.FirstOrDefault(i => i.CalorieImageID == ImageID);

            if (Img != null && Img.ApplicationUser_Id == ThisUserID)
            {
                //we can delete it.
                db.Images.Remove(Img);
                db.SaveChanges();

                Response.StatusCode = (int)HttpStatusCode.OK;
                return(Content("OK", MediaTypeNames.Text.Plain));
            }

            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return(Content("Couldn't find image or not permitted", MediaTypeNames.Text.Plain));
        }
示例#2
0
        public ActionResult Filter(string count, string type)
        {
            var countInt = GenericLogic.GetInt(count);
            var typeInt  = GenericLogic.GetInt(type);

            var returnRecords = new List <ApplicationUser>();

            var Companies = db.Users.Where(u => u.IsCompany).ToList();

            if (typeInt.HasValue && countInt.HasValue)
            {
                switch (typeInt)
                {
                case 1:
                    returnRecords = Companies.OrderByDescending(UserLogic.GetStarsForUser).Take(countInt.Value).ToList();
                    break;

                case 2:
                    returnRecords = Companies.OrderByDescending(u => CurrencyLogic.ToBase(u.Contributions)).Take(countInt.Value).ToList();
                    break;

                    //case 3:
                    //default:

                    //    break;
                }
            }


            return(PartialView("_CorporatePartials", new Models.Companys.CompanySearchResultsVM()
            {
                CorporateResults = returnRecords, ShowSelector = true
            }));
        }
示例#3
0
        public ActionResult Filter(string count, string type)
        {
            var countInt = GenericLogic.GetInt(count);
            var typeInt  = GenericLogic.GetInt(type);

            var returnRecords = new List <Team>();

            //1=Most Stars
            //    2=Most Pledges
            //    3= Most Popular
            if (typeInt.HasValue && countInt.HasValue)
            {
                switch (typeInt)
                {
                case 1:
                    returnRecords = db.Teams.ToList().OrderByDescending(TeamLogic.getStarsForTeam).Take(countInt.Value).ToList();
                    break;

                case 2:
                    returnRecords = db.Teams.OrderByDescending(t => t.Pledges.Count()).Take(countInt.Value).ToList();
                    break;

                case 3:
                default:
                    returnRecords = db.Teams.OrderByDescending(t => t.Members.Count()).Take(countInt.Value).ToList();

                    break;
                }
            }

            return(PartialView("_TeamPartials", new TeamSearchResultsVM {
                TeamResults = returnRecords, ShowSelector = false
            }));
        }
示例#4
0
        public ActionResult SaveImageFromURLWithDelete(string url, string idToDelete)
        {
            try
            {
                var idToDeleteInt = GenericLogic.GetInt(idToDelete);
                if (idToDeleteInt > 0)
                {
                    try
                    {
                        var CurrentImage = db.Images.FirstOrDefault(I => I.CalorieImageID == idToDeleteInt);
                        if (CurrentImage != null)
                        {
                            db.Images.Remove(CurrentImage);
                            db.SaveChanges();
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }


                var ID = ImageLogic.GetAndSaveImageFromURL(url, CalorieImage.ImageType.UserImage);
                return(Content(ID.ToString(), "text/xml"));
            }
            catch
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Content("", MediaTypeNames.Text.Plain));
            }
        }
示例#5
0
        public ActionResult Filter(string count, string type)
        {
            var countInt = GenericLogic.GetInt(count);
            var typeInt  = GenericLogic.GetInt(type);

            var returnRecords = new List <Pledge>();
            var source        = db.OpenPledges.Include("Activity_Types");

            if (typeInt.HasValue && countInt.HasValue)
            {
                switch (typeInt)
                {
                case 1:    //"New"
                    returnRecords = source.OrderByDescending(p => p.CreatedUTC).Take(countInt.Value).ToList();
                    break;

                case 2:    //"Trending"
                    returnRecords = source.OrderByDescending(p => p.CreatedUTC).Take(countInt.Value).ToList();
                    break;

                case 3:    //"Almost Completed"
                    returnRecords = source.ToList().OrderByDescending(p => p.TotalOffsetPercent).Take(countInt.Value).ToList();
                    break;

                case 4:    //"Almost Expired"
                    returnRecords = source.OrderBy(p => p.ExpiryDate).Take(countInt.Value).ToList();
                    break;
                }
            }

            return(PartialView("_PledgeSearchResultsPartial", new PledgeSearchVM {
                Pledges = returnRecords, SearchString = string.Empty, LoggedIn = (CurrentUser() != null)
            }));
        }
示例#6
0
        public ActionResult Filter(string count, string type)
        {
            var countInt = GenericLogic.GetInt(count);
            var typeInt  = GenericLogic.GetInt(type);

            var returnRecords = new List <Charity>();

            //"Most Raised", "Most Activities", "Most Liked
            if (typeInt.HasValue && countInt.HasValue)
            {
                switch (typeInt)
                {
                case 1:
                    returnRecords = db.Charities.ToList().OrderByDescending(c => c.Pledges.Sum(p => CurrencyLogic.ToBase(p.Contributors))).Take(countInt.Value).ToList();
                    break;

                case 2:
                    returnRecords = db.Charities.OrderByDescending(c => c.Pledges.Sum(p => p.Offsets.Count())).Take(countInt.Value).ToList();
                    break;

                case 3:
                default:
                    returnRecords = db.Charities.OrderByDescending(c => db.Likes.Count(l => l.LinkType == "Charity" && l.LinkID == c.ID.ToString())).Take(countInt.Value).ToList();
                    break;
                }
            }


            return(PartialView("_CharityPartials", new CharityListVM {
                Charities = returnRecords, ShowSelector = false, ShowSocial = true, ShowJustGivingLink = false
            }));
        }
示例#7
0
        public ActionResult DeleteAlert(string _AlertID)
        {
            var MessageID = GenericLogic.GetInt(_AlertID);

            var ThisUserID = string.Empty;

            if (CurrentUser() != null)
            {
                ThisUserID = CurrentUser().Id;
            }


            var Msg = db.Messages.FirstOrDefault(m => m.ID == MessageID && m.UserID == ThisUserID);

            if (Msg != null)
            {
                //we can delete it.
                Msg.Status = Message.StatusEnum.Read;
                db.SaveChanges();

                Response.StatusCode = (int)HttpStatusCode.OK;
                return(Content("OK", MediaTypeNames.Text.Plain));
            }

            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return(Content("Couldn't find message or not permitted", MediaTypeNames.Text.Plain));
        }
示例#8
0
        public ActionResult MakePayment(string ContribID)
        {
            var ContribIDInt = GenericLogic.GetInt(ContribID);

            if (ContribIDInt.HasValue)
            {
                var contrib = db.PledgeContributors.FirstOrDefault(pc => pc.ID == ContribIDInt);
                var URL     = JustGivingLogic.GetPaymentURL(contrib, Url, Request);
                return(Redirect(URL));
            }

            return(null);
        }
示例#9
0
        public async Task <ActionResult> FitBitGetDataForDate(string pledgeID, string inputDate)
        {
            var DateToSearch = GenericLogic.GetDateTime(inputDate);
            var pledge       = db.OpenPledges.FirstOrDefault(p => p.PledgeID.ToString() == pledgeID);

            if (pledge == null || !DateToSearch.HasValue)
            {
                return(null);
            }


            TrackerLogic.setRequestProps(Url, CurrentUser(), this.Request?.Url?.Scheme);
            var results = await TrackerLogic.Fitbit.getFitBitDataForDate(DateToSearch.Value, CurrentUser());

            return(PartialView("~/Views/offsets/Fitbit/_FitbitActivityPartialSummaryList.cshtml", results));
        }
示例#10
0
        public FitbitVM(string JSONBlob, DateTime _ActivityDate, ApplicationUser usr = null)
        {
            /*
             * "activityId":51007,
             * "activityParentId":90019,
             * "calories":230,
             * "description":"7mph",
             * "distance":2.04,
             * "duration":1097053,
             * "hasStartTime":true,
             * "isFavorite":true,
             * "logId":1154701,
             * "name":"Treadmill, 0% Incline",
             * "startTime":"00:25",
             * "steps":3783
             */


            jsonblob = JSONBlob;
            JSONObj  = System.Web.Helpers.Json.Decode(JSONBlob);

            var dtstr = _ActivityDate.ToString("dd MMMM yyyy");

            if (!string.IsNullOrEmpty(JSONObj.startTime))
            {
                dtstr += " " + JSONObj.startTime;
            }

            var tryDate = GenericLogic.GetDateTime(dtstr);

            JSONObj.ActivityDate = tryDate ?? _ActivityDate;



            //JSONObj.duration_mins =
            //JSONObj.total_kilometers = (((decimal)JSONObj.total_distance) / 1000.0m).ToString("0.00");
            //JSONObj.duration_hours = (((decimal)JSONObj.duration_mins) / 60.0m).ToString("0.00");

            JSONObj.logoPath = FitBit.LogoURL;

            //var rnd = new Random();
            //JSONObj.mapId = "map" + rnd.Next(1, 9999).ToString();
            //JSONObj.galleryID = "gallery" + rnd.Next(1, 9999).ToString();
            User        = usr;
            ShowButtons = true;
        }
示例#11
0
文件: FitBit.cs 项目: Rumkee/Website1
        public async Task <string> GetAccessCode(ApplicationDbContext db, Tracker t)
        {
            if (t == null)
            {
                return("No Authorization Code");
            }



            if (!string.IsNullOrEmpty(t.AccessToken) && (t.AccessTokenExpiry > DateTime.Now))
            {
                return(t.AccessToken);
            }

            if (!string.IsNullOrEmpty(t.RefreshToken))
            {
                var Headers = new List <KeyValuePair <string, string> >
                {
                    new KeyValuePair <string, string>("Authorization", "Basic " + GetAuthorizationCode())
                };

                var Data = new List <KeyValuePair <string, string> >
                {
                    new KeyValuePair <string, string>("refresh_token", t.RefreshToken),
                    new KeyValuePair <string, string>("grant_type", "refresh_token")
                };

                var result =
                    await GenericLogic.HttpPost(Headers, Data, ConfigurationManager.AppSettings["FitbitTokenURL"]);

                dynamic jsonresponse = System.Web.Helpers.Json.Decode(result);

                string accesstoken = jsonresponse?.access_token;
                if (!string.IsNullOrEmpty(accesstoken))
                {
                    t.AccessToken       = accesstoken;
                    t.RefreshToken      = jsonresponse?.refresh_token;
                    t.AccessTokenExpiry = DateTime.Now.AddSeconds((jsonresponse?.expires_in * 0.9));
                    t.ThirdPartyUserID  = jsonresponse?.user_id;
                    db.SaveChanges();
                    return(t.AccessToken);
                }

                Messaging.Add(Message.LevelEnum.alert_danger,
                              "Oops! something went wrong trying to request information from Fitbit",
                              Message.TypeEnum.TemporaryAlert, ParentTracker.User);
                db.SaveChanges();
                return(string.Empty);
            }
            else
            {
                var Headers = new List <KeyValuePair <string, string> >
                {
                    new KeyValuePair <string, string>("Authorization", "Basic " + GetAuthorizationCode())
                };

                var Data = new List <KeyValuePair <string, string> >
                {
                    new KeyValuePair <string, string>("code", t.AuthToken),
                    new KeyValuePair <string, string>("grant_type", "authorization_code"),
                    new KeyValuePair <string, string>("client_id", ConfigurationManager.AppSettings["FitbitClientID"]),
                    new KeyValuePair <string, string>("redirect_uri",
                                                      ParentTracker.Url.Action("FitbitAuthCompleted", "Trackers", null,
                                                                               ParentTracker.RequestScheme))
                };

                var result =
                    await GenericLogic.HttpPost(Headers, Data, ConfigurationManager.AppSettings["FitbitTokenURL"])
                ;

                dynamic jsonresponse = System.Web.Helpers.Json.Decode(result);

                string accesstoken = jsonresponse?.access_token;

                if (!string.IsNullOrEmpty(accesstoken))
                {
                    t.AccessToken       = accesstoken;
                    t.RefreshToken      = jsonresponse?.refresh_token;
                    t.AccessTokenExpiry = DateTime.Now.AddSeconds((jsonresponse?.expires_in * 0.9));
                    t.ThirdPartyUserID  = jsonresponse?.user_id;
                    db.SaveChanges();
                    return(t.AccessToken);
                }
                else
                {
                    //there was a problem.
                    Messaging.Add(Message.LevelEnum.alert_danger,
                                  "Oops! something went wrong trying to request information from Fitbit",
                                  Message.TypeEnum.TemporaryAlert, ParentTracker.User);
                    db.SaveChanges();
                    return(string.Empty);
                }
            }
        }
示例#12
0
        public ActionResult PaymentComplete(string ID)
        {
            try
            {
                var IDInt = GenericLogic.GetInt(ID);

                if (!IDInt.HasValue)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                var contrib = db.PledgeContributors.FirstOrDefault(c => c.ID == IDInt);

                if (contrib == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }


                string url = ConfigurationManager.AppSettings["JustGivingAPIURL"] + ConfigurationManager.AppSettings["JustGivingAppId"] + "/v1/donation/ref/" + contrib.ID;

                //need to check this...contrib.ThirdPartyRef
                var i = new Uri(url);

                var request = WebRequest.CreateDefault(i);
                request.Method      = "GET";
                request.ContentType = "application/json";

                var          response      = request.GetResponse();
                StreamReader reader        = new StreamReader(response.GetResponseStream());
                var          requestedText = reader.ReadToEnd();


                dynamic data = System.Web.Helpers.Json.Decode(requestedText);


                // var amount = data?.donations[0]?.amount;
                var thirdPartyReference = data?.donations[0]?.thirdPartyReference;
                var status = data?.donations[0]?.status;//"Accepted"

                if (thirdPartyReference != contrib.ID.ToString())
                {
                    throw new Exception();
                }

                if (status == "Accepted")
                {
                    contrib.Status = PledgeContributors.PledgeContribuionStatus.Completed;
                    db.SaveChanges();
                }
                else
                {
                    Messaging.Add(Message.LevelEnum.alert_warning, "Looks like the payment wasn't made. Try making payment again.", Message.TypeEnum.TemporaryAlert, contrib.Sinner);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }

                Messaging.Add(Message.LevelEnum.alert_success, "Thank You. Your payment has now been processed.", Message.TypeEnum.StickyAlert, contrib.Sinner);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            catch {
                if (CurrentUser() != null)
                {
                    Messaging.Add(Message.LevelEnum.alert_warning, "OOps! that didn't work. try making payment again.", Message.TypeEnum.TemporaryAlert, CurrentUser());
                    db.SaveChanges();
                }
                return(RedirectToAction("Index"));
            }
        }
示例#13
0
 public ActionResult FAQ() => View(GenericLogic.GetFAQs(Url));