public static getAllLogsResponse getAllLogsImplementation(getAllLogsRequest request)
        {
            if (request.authToken != Constants.MarketingToken)
            {
                return new getAllLogsResponse()
                       {
                           success = false, status = 404, message = "Wrong Token"
                       }
            }
            ;

            var rv = new getAllLogsResponse();


            rv.logs = new List <Responses.Logs>();
            using (var db = new UniversalGymEntities())
            {
                var logs = Enumerable.Empty <Data.Log>();;
                if (request.getAction && request.getError)
                {
                    logs = db.Logs.OrderByDescending(w => w.InsertDate).ToList().Take(100);
                }
                else if (request.getAction && !request.getError)
                {
                    logs = db.Logs.OrderByDescending(w => w.InsertDate).Where(w => w.IsError == false).ToList().Take(100);
                }
                else if (!request.getAction && request.getError)
                {
                    logs = db.Logs.OrderByDescending(w => w.InsertDate).Where(w => w.IsError == true).ToList().Take(100);
                }
                foreach (var log in logs)
                {
                    var temp = new Responses.Logs
                    {
                        LogId      = log.LogId.ToString() ?? "NULL",
                        LogMessage = log.LogMessage ?? "NULL",
                        InsertDate = log.InsertDate.ToString() ?? "NULL",
                        IsError    = log.IsError.ToString() ?? "NULL",
                    };

                    rv.logs.Add(temp);
                }
            }
            rv.success = true;
            rv.message = "";
            return(rv);
        }
    }
        public static GymCheckinsResponse getGymCheckInsImplementation(GetGymCheckInsRequest request)
        {
            using (var db = new UniversalGymEntities())
            {
                if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
                {
                    return(new GymCheckinsResponse
                    {
                        message = "Gym not found.",
                        status = 404,
                        success = false,
                    });
                }

                var gym = db.Gyms.SingleOrDefault(a => a.CurrentToken == request.authToken && a.GymId == request.accountId);
                if (gym == null)
                {
                    return(new GymCheckinsResponse
                    {
                        message = "Gym not found.",
                        status = 404,
                        success = false,
                    });
                }

                var month        = DateTime.UtcNow.Month;
                var year         = DateTime.UtcNow.Year;
                var startDate    = new DateTime(year, month, 1);
                var endDate      = new DateTime(year, month, DateTime.DaysInMonth(year, month));
                var newCheckInds = db.GymPasses.Where(w => w.LocalDateBought >= startDate && w.LocalDateBought <= endDate && w.GymId == request.accountId).OrderByDescending(o => o.LocalDateBought).ThenByDescending(t => t.LocalDateBought).Take(request.count).ToList();
                var newVms       = newCheckInds.Select(
                    s =>
                    new Checkin()
                {
                    name       = s.User.FirstName + " " + s.User.LastName,
                    email      = s.User.Email,
                    dateBought = s.LocalDateBought.ToString(),
                }).ToList();
                var rv = new GymCheckinsResponse()
                {
                    items   = newVms,
                    status  = 200,
                    success = true,
                    message = "Success!"
                };
                return(rv);
            }
        }
        public static GymDataResponse gymLoginImplementation(UserDataRequest request)
        {
            using (var db = new UniversalGymEntities())
            {
                if (String.IsNullOrWhiteSpace(request.emailAddress))
                {
                    return(new GymDataResponse
                    {
                        message = "Please enter an email.",
                        status = 404,
                        success = false,
                    });
                }

                if (String.IsNullOrWhiteSpace(request.password))
                {
                    return(new GymDataResponse
                    {
                        message = "Please enter a password.",
                        status = 404,
                        success = false,
                    });
                }


                // admin access
                if (!request.password.Equals(Constants.MarketingToken))
                {
                    if (!MembershipHelper.userExists(request.emailAddress, request.password, Constants.GymRole))
                    {
                        return(new GymDataResponse {
                            message = "Username or Password incorrect!!", status = 401, success = false
                        });;
                    }
                }

                var  user = MembershipHelper.getUser(request.emailAddress, Constants.GymRole);
                Guid guid = Guid.Parse(user.ProviderUserKey.ToString());
                var  gym  = db.Gyms.FirstOrDefault(cs => cs.GymGuid == guid);

                return(gymDataHelper.CreateGymDataResponse(gym.GymId, true));
            }
        }
Пример #4
0
        public static BasicResponse removeGymHoursImplementation(removeGymHoursRequest request)
        {
            using (var db = new UniversalGymEntities())
            {
                if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
                {
                    return(new BasicResponse
                    {
                        message = "Gym not found.",
                        status = 404,
                        success = false,
                    });
                }

                var gym = db.Gyms.SingleOrDefault(a => a.CurrentToken == request.authToken && a.GymId == request.accountId);
                if (gym == null)
                {
                    return(new BasicResponse
                    {
                        message = "Gym not found.",
                        status = 404,
                        success = false,
                    });
                }

                var gymHour = db.GymSchedules.First(w => w.GymScheduleId == request.gymHourId);
                if (gymHour == null)
                {
                    return(new BasicResponse
                    {
                        message = "Time schedule not found.",
                        status = 404,
                        success = false,
                    });
                }

                db.GymSchedules.Remove(gymHour);
                db.SaveChanges();
                return(new BasicResponse {
                    status = 200, success = true, message = "Successfully Removed"
                });
            }
        }
        public static BasicResponse suspendSubscriptionImplementation(BaseRequest request)
        {
            if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
            {
                return(new BasicResponse
                {
                    message = "User not found.",
                    status = 404,
                    success = false,
                });
            }

            using (var db = new UniversalGymEntities())
            {
                var user = db.Users.SingleOrDefault(a => a.CurrentToken == request.authToken && a.UserId == request.accountId);
                if (user == null)
                {
                    return(new BasicResponse
                    {
                        message = "User not found.",
                        status = 404,
                        success = false,
                    });
                }

                if (String.IsNullOrWhiteSpace(user.StripeUrl))
                {
                    return(new BasicResponse {
                        message = "User is missing billing information.", status = 901, success = false
                    });
                }

                new StripeSubscription().RemoveCustomerFromSubscription(user.StripeUrl);
                user.hasActiveSubscription = false;

                db.SaveChanges();

                return(new BasicResponse {
                    message = "Subscription was successfully cancelled.", status = 200, success = true
                });
            }
        }
Пример #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static AllDataResponse userLoginImplementation(UserDataRequest request)
        {
            using (var db = new UniversalGymEntities())
            {
                if (String.IsNullOrWhiteSpace(request.emailAddress))
                {
                    return(new AllDataResponse
                    {
                        message = "Please enter an email.",
                        status = 404,
                        success = false,
                    });
                }

                if (String.IsNullOrWhiteSpace(request.password))
                {
                    return(new AllDataResponse
                    {
                        message = "Please enter a password.",
                        status = 404,
                        success = false,
                    });
                }

                if (!MembershipHelper.userExists(request.emailAddress, request.password, Constants.UserRole))
                {
                    return(new AllDataResponse {
                        message = "Username or Password incorrect", status = 5, success = false
                    });
                }

                MembershipUser user     = MembershipHelper.getUser(request.emailAddress, Constants.UserRole);
                Guid           userGuid = Guid.Parse(user.ProviderUserKey.ToString());

                var user2 = (from cs in db.Users
                             where cs.UserGuid == userGuid
                             select cs).FirstOrDefault();

                return(allDataHelper.CreateAllDataResponse(user2.UserId, true));
            }
        }
Пример #7
0
        public static getAllGymInvoicesResponse getAllGymInvoicesImplementation(BaseRequest request)
        {
            if (request.authToken != Constants.MarketingToken)
            {
                return new getAllGymInvoicesResponse()
                       {
                           success = false, status = 404, message = "Wrong Token"
                       }
            }
            ;

            var rv = new getAllGymInvoicesResponse();



            rv.gymInvoices = new List <Responses.GymInvoices>();
            using (var db = new UniversalGymEntities())
            {
                var gymInvoices = db.GymInvoices.ToList();

                foreach (var gymInvoice in gymInvoices)
                {
                    var temp = new Responses.GymInvoices
                    {
                        Id = gymInvoice.Id.ToString() ?? "NULL",
                        StartPeriodDate = gymInvoice.StartPeriodDate.ToString() ?? "NULL",
                        EndPeriodDate   = gymInvoice.EndPeriodDate.ToString() ?? "NULL",
                        AmountPaid      = gymInvoice.AmountPaid.ToString() ?? "NULL",
                        IsCollected     = gymInvoice.IsCollected.ToString() ?? "NULL",
                        GymId           = gymInvoice.GymId.ToString() ?? "NULL",
                    };

                    rv.gymInvoices.Add(temp);
                }
            }

            rv.success = true;
            rv.message = "";
            return(rv);
        }
    }
Пример #8
0
        public static BasicResponse updateBankInfoImplementation(BankAccountInfoRequest request)
        {
            //validate incoming data
            if (String.IsNullOrWhiteSpace(request.stripeToken))
            {
                return(new BasicResponse {
                    message = "Bank Routing Number or Account Number was not valid.", status = 601, success = false
                });
            }

            if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
            {
                return(new BasicResponse
                {
                    message = "Gym not found.",
                    status = 404,
                    success = false,
                });
            }

            using (var db = new UniversalGymEntities())
            {
                var gym = db.Gyms.SingleOrDefault(a => a.CurrentToken == request.authToken && a.GymId == request.accountId);
                if (gym == null)
                {
                    return(new BasicResponse
                    {
                        message = "Gym not found.",
                        status = 404,
                        success = false,
                    });
                }

                var recipId = new StripeAch().CreateRecipient(gym.ContactInfo.Email, gym.GymName, "account for " + gym.GymName, request.stripeToken);
                gym.StripeUrl = recipId;
                db.SaveChanges();
                return(new BasicResponse {
                    status = 200, success = true, message = "Success!"
                });
            }
        }
Пример #9
0
        // decides whether to create new customer or update them
        public static string HandleCustomer(string cardToken, Data.User user)
        {
            var rv = "";

            if (String.IsNullOrWhiteSpace(user.StripeUrl))
            {
                // create new customer
                rv = new StripeCustomer().CreateCustomer(user.Email, user.FirstName + " " + user.LastName, cardToken);
                new StripeSubscription().AddCustomerToSubscription(rv);
                using (var db = new UniversalGymEntities())
                {
                    user.StripeUrl             = rv;
                    user.hasActiveSubscription = true;
                    user.hasCreditCard         = true;
                    db.SaveChanges();
                }
            }
            else
            {
                // update customer
                rv = new StripeCustomer().UpdateCustomer(user.StripeUrl, cardToken);


                // if user suspended account and is reenabling it right now
                using (var db = new UniversalGymEntities())
                {
                    if (user.hasActiveSubscription != true)
                    {
                        new StripeSubscription().AddCustomerToSubscription(rv);
                        user.hasActiveSubscription = true;
                        user.hasCreditCard         = true;

                        db.SaveChanges();
                    }
                }
            }

            return(rv);
        }
        public static BasicResponse updateSelectedCoverPhotoImplementation(UpdateCoverPhotoRequest request)
        {
            if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
            {
                return(new BasicResponse
                {
                    message = "Gym not found.",
                    status = 404,
                    success = false,
                });
            }

            using (var db = new UniversalGymEntities())
            {
                var gym = db.Gyms.SingleOrDefault(a => a.CurrentToken == request.authToken && a.GymId == request.accountId);
                if (gym == null)
                {
                    return(new BasicResponse
                    {
                        message = "Gym not found.",
                        status = 404,
                        success = false,
                    });
                }

                var photoes = db.GymPhotoGalleries.Where(w => w.GymId == gym.GymId);
                foreach (var photo in photoes)
                {
                    // set all others to false
                    photo.IsCoverPhoto = photo.GymPhotoGalleryId == request.pictureId;
                }
                db.SaveChanges();
                return(new BasicResponse {
                    status = 200, success = true, message = "Success!"
                });
            }
        }
        public static addGymHoursResponse addGymHoursImplementation(addGymHoursRequest request)
        {
            using (var db = new UniversalGymEntities())
            {
                if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
                {
                    return(new addGymHoursResponse {
                        status = 401, success = false, message = "Gym not found"
                    });
                }
                else if (String.IsNullOrWhiteSpace(request.day))
                {
                    return(new addGymHoursResponse {
                        status = 401, success = false, message = "Please select a day"
                    });
                }
                else if (request.startTime == null)
                {
                    return(new addGymHoursResponse {
                        status = 401, success = false, message = "Please select a start time"
                    });
                }
                else if (request.endTime == null)
                {
                    return(new addGymHoursResponse {
                        status = 401, success = false, message = "Please select an end time"
                    });
                }


                var gym = db.Gyms.SingleOrDefault(a => a.CurrentToken == request.authToken && a.GymId == request.accountId);
                if (gym == null)
                {
                    return(new addGymHoursResponse
                    {
                        message = "Gym not found.",
                        status = 404,
                        success = false,
                    });
                }

                var weekDay = db.TypeWeekDays.SingleOrDefault(s => s.TypeDescription == request.day);

                if (weekDay == null)
                {
                    return(new addGymHoursResponse {
                        status = 401, success = false, message = "Day not valid"
                    });
                }

                var startTime = new DateTime();
                var endTime   = new DateTime();

                if (request.startTime.hour == 24)
                {
                    // next day at 0 hour
                    startTime = new DateTime(1990, 11, 20, 0, request.startTime.minute, 0, 0);
                }
                else
                {
                    startTime = new DateTime(1990, 11, 19, request.startTime.hour, request.startTime.minute, 0, 0);
                }

                if (request.endTime.hour == 24)
                {
                    // next day at 0 hour

                    endTime = new DateTime(1990, 11, 20, 0, 0, 0, 0);
                }
                else
                {
                    endTime = new DateTime(1990, 11, 19, request.endTime.hour, request.endTime.minute, 0, 0);
                }

                if (startTime >= endTime)
                {
                    return(new addGymHoursResponse {
                        status = 401, success = false, message = "The start time has to come before the end time"
                    });
                }

                // non-intersection between two dates = if (A1 > B2 || B1 > A2)
                // so intersection is the opposite !
                var overlapSchedules = db.GymSchedules.Any(s => s.GymId == request.accountId &&
                                                           s.TypeWeekDayId == weekDay.TypeWeekDayId &&
                                                           (!(s.StartTime >= endTime || startTime >= s.EndTime)));
                if (overlapSchedules)
                {
                    return(new addGymHoursResponse
                    {
                        message = "Schedule overlaps with another existing schedule.",
                        status = 404,
                        success = false,
                    });
                }


                var gymHours = new Data.GymSchedule
                {
                    TypeWeekDayId = weekDay.TypeWeekDayId,
                    StartTime     = startTime,
                    EndTime       = endTime,
                    GymId         = gym.GymId,
                };
                db.GymSchedules.Add(gymHours);
                db.SaveChanges();


                return(new addGymHoursResponse {
                    status = 200, success = true, message = "Gym hours added!", gymHourId = gymHours.GymScheduleId
                });
            }
        }
        public static UploadPictureResponse uploadPhotoImplementation(Stream file, string token, string accountId)
        {
            if (String.IsNullOrWhiteSpace(token))
            {
                return(new UploadPictureResponse
                {
                    message = "Gym not found.",
                    status = 404,
                    success = false,
                });
            }

            int accountIdAsInt;

            if (String.IsNullOrWhiteSpace(accountId) || !Int32.TryParse(accountId, out accountIdAsInt))
            {
                return(new UploadPictureResponse
                {
                    message = "Gym not found.",
                    status = 404,
                    success = false,
                });
            }


            var parser = new MultipartParser(file);

            using (var db = new UniversalGymEntities())
            {
                var gym = db.Gyms.SingleOrDefault(a => a.CurrentToken == token && a.GymId == accountIdAsInt);
                if (gym == null)
                {
                    new UploadPictureResponse
                    {
                        message = "Gym not found.",
                        status  = 404,
                        success = false,
                    };
                }

                if (gym.GymPhotoGalleries.Count >= 8)
                {
                    return(new UploadPictureResponse {
                        message = "You can only upload up to 8 images.", status = 404, success = false
                    });
                }

                if (parser.Success)
                {
                    // Make sure really is image and the kind we want
                    string[] supportedMimeTypes = { "images/png", "image/png", "image/jpeg", "images/jpeg", "image/jpg", "images/jpg" };

                    if (!supportedMimeTypes.Contains(parser.ContentType.ToString().ToLower()))
                    {
                        return(new UploadPictureResponse {
                            message = "Image needs to be .png or .jpg", status = 404, success = false
                        });
                    }

                    var megabyte      = 1024;
                    var fileSizeLimit = megabyte * 2;
                    if (parser.FileContents.Length < fileSizeLimit)
                    {
                        return(new UploadPictureResponse {
                            message = "Image too large", status = 404, success = false
                        });
                    }


                    var picture = new Data.GymPhotoGallery
                    {
                        GymId        = gym.GymId,
                        IsCoverPhoto = false
                    };
                    db.GymPhotoGalleries.Add(picture);


                    var filename = gym.GymId + "_" + Guid.NewGuid();

                    var storageAccount = CloudStorageAccount.Parse(Constants.BlobStorageConnectionString);

                    CloudBlobClient    blobClient    = storageAccount.CreateCloudBlobClient();
                    CloudBlobContainer blobContainer = blobClient.GetContainerReference(Constants.GymPicturesBlobContainerName);

                    CloudBlockBlob blob = blobContainer.GetBlockBlobReference(filename);
                    blob.Properties.ContentType = parser.ContentType;
                    blob.UploadFromByteArrayAsync(parser.FileContents, 0, parser.FileContents.Length);

                    //  the magical url to the picture
                    var url = blob.Uri.ToString();

                    picture.Photo = url;

                    // if no other photos, set isCoverPhoto to true
                    var hasCoverPhoto = db.GymPhotoGalleries.SingleOrDefault(a => a.GymId == gym.GymId && a.IsCoverPhoto == true);
                    if (hasCoverPhoto == null)
                    {
                        picture.IsCoverPhoto = true;
                    }

                    db.SaveChanges();

                    var uploadedPhoto = new pictureResult
                    {
                        url          = picture.Photo,
                        pictureId    = picture.GymPhotoGalleryId,
                        isCoverPhoto = picture.IsCoverPhoto,
                    };

                    // return back new url
                    return(new UploadPictureResponse {
                        status = 200, picture = uploadedPhoto, success = true, message = "Success!"
                    });
                }
                else
                {
                    return(new UploadPictureResponse {
                        status = 500, success = false, message = "Not able to parse file"
                    });
                }
            }
        }
Пример #13
0
        public static GymSearchListResponse searchGymsByCityImplementation(SearchGymRequest request)
        {
            GymSearchListResponse rv;

            using (var db = new UniversalGymEntities())
            {
                var searchRequest = new Data.SearchRequest
                {
                    SearchDate             = DateTime.Now,
                    UniqueDeviceIdentifier = request.uniqueDeviceId,
                };

                if (request.longitude != 0 && request.latitude != 0)
                {
                    searchRequest.Position = System.Data.Entity.Spatial.DbGeography.FromText(String.Format("POINT({0} {1})", request.longitude, request.latitude));
                }



                if (!request.city.Equals("NULL"))
                {
                    searchRequest.Request = request.city;
                }

                if (!request.state.Equals("NULL"))
                {
                    searchRequest.Request = searchRequest.Request + " " + request.state ?? "NO STATE";
                }

                var user = db.Users.SingleOrDefault(a => a.CurrentToken == request.authToken && a.UserId == request.accountId);
                if (user != null)
                {
                    searchRequest.UserId = user.UserId;
                }


                db.SearchRequests.Add(searchRequest);
                db.SaveChanges();



                // convert city, state to lat, long
                var target   = searchRequest.Request;
                var geocoded = Geocoder.GeoCodeAddress(target);
                if (geocoded != null)
                {
                    var cityLocation = System.Data.Entity.Spatial.DbGeography.FromText(
                        String.Format("POINT({0} {1})",
                                      geocoded.Longitude,
                                      geocoded.Latitude));


                    var gyms = db.Gyms.Where(w => w.Position != null).OrderBy(o => o.Position.Distance(cityLocation));
                    rv = GymSearchListHelper.createGymSearchListResponse(gyms, cityLocation.Latitude, cityLocation.Longitude);
                    if (user != null)
                    {
                        rv.credits = user.Credits;
                    }
                    else
                    {
                        rv.credits = 0;
                    }

                    var searchText = "DeviceId: "
                                     + request.uniqueDeviceId
                                     + Environment.NewLine;
                    if (searchRequest.User != null)
                    {
                        searchText = searchText
                                     + "User: "******"Request: "
                                 + searchRequest.Request;

                    SlackHelper.sendSearchChannel(searchText, request.latitude.ToString(), request.longitude.ToString());
                }
                else
                {
                    var searchText = "";
                    if (searchRequest.User != null)
                    {
                        searchText = searchText
                                     + "User: "******"Request: "
                                 + searchRequest.Request;

                    SlackHelper.sendSearchChannelNotFound(searchText);

                    rv = new GymSearchListResponse {
                        success = false,
                        status  = 400,
                        message = "Could not find location"
                    };
                    if (user != null)
                    {
                        rv.credits = user.Credits;
                    }
                    else
                    {
                        rv.credits = 0;
                    }
                }
            }
            return(rv);
        }
        public static BasicResponse updateGymInfoImplementation(UpdateGymInfoRequest request)
        {
            if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
            {
                return(new BasicResponse
                {
                    message = "Gym not found.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.address))
            {
                return(new BasicResponse
                {
                    message = "Please enter an address.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.city))
            {
                return(new BasicResponse
                {
                    message = "Please enter a city.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.contactName))
            {
                return(new BasicResponse
                {
                    message = "Please enter a contact name.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.contactPhone))
            {
                return(new BasicResponse
                {
                    message = "Please enter a contact phone number.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.gymName))
            {
                return(new BasicResponse
                {
                    message = "Please enter a gym name.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.gymPhone))
            {
                return(new BasicResponse
                {
                    message = "Please enter a gym phone number.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.gymUrl))
            {
                return(new BasicResponse
                {
                    message = "Please enter a gym url.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.state))
            {
                return(new BasicResponse
                {
                    message = "Please enter a state.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.data.zip))
            {
                return(new BasicResponse
                {
                    message = "Please enter a zip code.",
                    status = 404,
                    success = false,
                });
            }

            using (var db = new UniversalGymEntities())
            {
                var gym = db.Gyms.SingleOrDefault(a => a.CurrentToken == request.authToken && a.GymId == request.accountId);
                if (gym == null)
                {
                    return(new BasicResponse
                    {
                        message = "Gym not found.",
                        status = 404,
                        success = false,
                    });
                }


                var state = db.TypeStates.FirstOrDefault(f => f.StateAbbreviation.ToLower() == request.data.state.ToLower()) ??
                            db.TypeStates.First(f => f.StateAbbreviation == "00");
                gym.ContactInfo1.Address.TypeStateId = state.TypeStateId;
                gym.ContactInfo1.Address.City        = request.data.city;
                gym.ContactInfo1.Address.Zip         = request.data.zip;
                gym.ContactInfo.Phone  = request.data.contactPhone;
                gym.ContactInfo1.Phone = request.data.gymPhone;
                gym.GymName            = request.data.gymName;
                gym.GymInfo            = request.data.description;
                gym.OwnerName          = request.data.contactName;
                var url = request.data.gymUrl;
                if (!String.IsNullOrWhiteSpace(url))
                {
                    gym.Url = new UriBuilder(url).Uri.ToString();
                }
                db.SaveChanges();


                db.SaveChanges();

                var target   = request.data.address + " " + request.data.state + " " + request.data.zip;
                var geocoded = Geocoder.GeoCodeAddress(target);

                if (geocoded != null)
                {
                    gym.Position = System.Data.Entity.Spatial.DbGeography.FromText(geocoded.GetPointString());
                    db.SaveChanges();
                }

                return(new BasicResponse()
                {
                    success = true, status = 200, message = "Success!"
                });
            }
        }
        public static PurchaseGymResponse purchaseGymImplementation(PurchaseDayPassRequest request)
        {
            if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
            {
                return(new PurchaseGymResponse
                {
                    message = "User not found.",
                    status = 404,
                    success = false,
                });
            }

            using (var db = new UniversalGymEntities())
            {
                var user = db.Users.SingleOrDefault(a => a.CurrentToken == request.authToken && a.UserId == request.accountId);
                if (user == null)
                {
                    return(new PurchaseGymResponse
                    {
                        message = "User not found.",
                        status = 404,
                        success = false,
                    });
                }

                if (String.IsNullOrWhiteSpace(user.StripeUrl))
                {
                    return(new PurchaseGymResponse {
                        message = "Please add a credit card.", status = 703, success = false
                    });
                }
                var gym = db.Gyms.SingleOrDefault(w => w.GymId == request.gymId);
                if (gym == null)
                {
                    return(new PurchaseGymResponse {
                        message = "Gym does not exist.", status = 701, success = false
                    });
                }

                var creditsUsed    = new CreditUse(db).UseCredit(user, gym.PriceToCharge);
                var amountToCharge = gym.PriceToCharge - creditsUsed;

                if (amountToCharge > 0)
                {
                    new StripeCharge().ChargeCardForPass(user.StripeUrl, amountToCharge, gym.GymName);
                }
                var locationString = "location=" + gym.Position.Latitude + ", " + gym.Position.Longitude;

                DateTime origin          = new DateTime(1970, 1, 1, 0, 0, 0, 0);
                TimeSpan diff            = DateTime.UtcNow.ToUniversalTime() - origin;
                var      timeStamp       = Math.Floor(diff.TotalSeconds);
                var      timeStampString = "timestamp=" + timeStamp;
                var      googleUrl       = "https://maps.googleapis.com/maps/api/timezone/json?key=" + Constants.GoogleApiKey + "&" + timeStampString + "&" + locationString;

                Uri          uri              = new Uri(googleUrl);
                WebRequest   webRequest       = WebRequest.Create(uri);
                WebResponse  response         = webRequest.GetResponse();
                StreamReader streamReader     = new StreamReader(response.GetResponseStream());
                String       responseData     = streamReader.ReadToEnd();
                var          outObject        = JsonConvert.DeserializeObject <GoogleTimeZoneResponse>(responseData);
                DateTime     gymLocalDateTime = DateTime.UtcNow.AddSeconds(Convert.ToDouble(outObject.dstOffset) + Convert.ToDouble(outObject.rawOffset));

                var gymLocalEndOfDay = new DateTime(gymLocalDateTime.Year, gymLocalDateTime.Month, gymLocalDateTime.Day, 0, 0, 0, 000);
                gymLocalEndOfDay = gymLocalEndOfDay.AddDays(1);

                var item = new GymPass
                {
                    UserId               = user.UserId,
                    GymId                = request.gymId,
                    LocalDateBought      = gymLocalDateTime,
                    LocalDateExpired     = gymLocalEndOfDay,
                    CreditsUsed          = creditsUsed,
                    ServerTimeDateBought = DateTime.Now,
                    AmountCharged        = amountToCharge,
                    GymPassCost          = gym.CreditDollarValue,
                };
                db.GymPasses.Add(item);
                db.SaveChanges();

                var passText = "Pass Purchase"
                               + Environment.NewLine
                               + "User: "******"Gym: "
                               + item.Gym.GymName
                               + Environment.NewLine
                               + "Phone Number: "
                               + item.Gym.ContactInfo.Phone
                               + Environment.NewLine
                               + "LocalDateBought: "
                               + item.LocalDateBought
                               + Environment.NewLine
                               + "+ Credits Used: "
                               + intToMoney(item.CreditsUsed)
                               + Environment.NewLine
                               + "+ Amount Charged: "
                               + intToMoney(item.AmountCharged)
                               + Environment.NewLine
                               + "- Gym Pass Cost: "
                               + intToMoney(item.GymPassCost);

                SlackHelper.sendPassChannel(passText, item.Gym.Position.Latitude.ToString(), item.Gym.Position.Longitude.ToString());


                return(new PurchaseGymResponse
                {
                    message = "Pass Activated.",
                    status = 200,
                    success = true,
                    newCreditValue = user.Credits,
                    localGymDateTimeBought = gymLocalDateTime.ToString("MMM d, yyyy").ToUpper(),
                    localGymDateTimeExpiration = gymLocalEndOfDay.ToString("MMM d, yyyy").ToUpper()
                });
            }
        }
Пример #16
0
 public CreditUse(UniversalGymEntities db)
 {
     this.Db = db;
 }
        public static GymDataResponse CreateGymDataResponse(int gymId, bool genNewToken)
        {
            using (var db = new UniversalGymEntities())
            {
                var gym = db.Gyms.First(f => f.GymId == gymId);

                var baseRefUrl = "";
                if (genNewToken)
                {
                    gym.CurrentToken = Guid.NewGuid().ToString();
                    db.SaveChanges();
                }



                //gym photo
                var gymPhotoList = db.GymPhotoGalleries
                                   .Where(w => w.GymId == gymId)
                                   .OrderByDescending(o => o.IsCoverPhoto)
                                   .Select(s => new PictureObject
                {
                    url     = s.Photo,
                    isCover = s.IsCoverPhoto,
                    id      = s.GymPhotoGalleryId,
                }).ToList();
                var gymPhotos         = gymPhotoList.Any() ? gymPhotoList : new List <PictureObject> {
                };
                var hasRightGymPhotos = false;
                if (gymPhotos.Count <= 8 && gymPhotos.Count >= 3)
                {
                    hasRightGymPhotos = true;
                }


                //gym schedules
                var gymSchedulesList = db.GymSchedules
                                       .Where(w => w.GymId == gymId)
                                       .OrderBy(w => w.TypeWeekDay.Order)
                                       .ThenBy(n => n.StartTime)
                                       .Select(s => new Schedule
                {
                    day       = s.TypeWeekDay.TypeDescription,
                    startTime = new gymHour
                    {
                        hour   = s.StartTime.Hour,
                        minute = s.StartTime.Minute,
                    },
                    endTime = new gymHour
                    {
                        hour   = s.EndTime.Hour,
                        minute = s.EndTime.Minute,
                    },
                    id = s.GymScheduleId,
                }).ToList();
                var gymSchedules      = gymSchedulesList.Any() ? gymSchedulesList : new List <Schedule> {
                };
                var hasRightSchedules = false;
                if (gymSchedules.Count > 0)
                {
                    hasRightSchedules = true;
                }

                var startingPaymentDate   = "";
                var endingPaymentDate     = "";
                var currentPaymentBalance = 0;
                var collectPaymentBalance = 0;

                if (gym.IsApproved && !gym.badData)
                {
                    // equal to same time as endingpaymentdate of last invoice
                    startingPaymentDate = "";

                    // starting date + 14 days?
                    endingPaymentDate = "";

                    // all gympass costs in above time frame
                    currentPaymentBalance = 0;

                    // all previous gym invoices with isCollected set to false
                    collectPaymentBalance = 0;
                }


                return(new GymDataResponse
                {
                    address = gym.ContactInfo1.Address.StreetLine1,
                    token = gym.CurrentToken,
                    city = gym.ContactInfo1.Address.City,
                    state = gym.ContactInfo1.Address.TypeState.StateAbbreviation,
                    zip = gym.ContactInfo1.Address.Zip,
                    isApproved = gym.IsApproved,
                    contactName = gym.OwnerName,
                    contactPhone = gym.ContactInfo.Phone,
                    contactEmail = gym.ContactInfo.Email,
                    gymPhone = gym.ContactInfo1.Phone,
                    description = gym.GymInfo,
                    gymId = gym.GymId,
                    gymUrl = gym.Url,
                    scheduleUrl = gym.ScheduleUrl,
                    gymName = gym.GymName,
                    status = 200,
                    success = true,
                    message = "Success!",
                    price = gym.CreditDollarValue.ToString(),
                    pictures = gymPhotos,
                    hasAccount = !String.IsNullOrWhiteSpace(gym.StripeUrl),
                    schedules = gymSchedules,
                    hasRightHours = hasRightSchedules,
                    hasRightGymPhotos = hasRightGymPhotos,
                    rightGymPhotosMessage = "Please upload 3 to 8 photos of your gym.",
                    rightHourMessage = "Please input gym hours.",
                    startingPaymentDate = startingPaymentDate,
                    endingPaymentDate = endingPaymentDate,
                    currentPaymentBalance = currentPaymentBalance,
                    collectPaymentBalance = collectPaymentBalance,
                });
            }
        }
Пример #18
0
        public static AllDataResponse CreateAllDataResponse(int userId, bool genNewToken)
        {
            using (var db = new UniversalGymEntities())
            {
                var userItem = db.Users.First(f => f.UserId == userId);

                var baseRefUrl = "";
                if (genNewToken)
                {
                    userItem.CurrentToken = Guid.NewGuid().ToString();
                    db.SaveChanges();
                }

                var user = new UserResponse
                {
                    userId                = userId,
                    firstName             = userItem.FirstName,
                    lastName              = userItem.LastName,
                    email                 = userItem.Email,
                    referalBaseUrl        = baseRefUrl,
                    referalCode           = userItem.ReferalUrl,
                    hasActiveSubscription = userItem.hasActiveSubscription,
                    credits               = userItem.Credits,
                    stripeUserId          = (userItem.StripeUrl ?? "").ToString(),
                    hasCreditCard         = userItem.hasCreditCard,
                    purchasedGyms         = new List <GymResponse>(),
                };

                var userPasses = db.GymPasses.Include("Gym").Where(w => w.UserId == userId).OrderByDescending(o => o.ServerTimeDateBought).ToList().Take(15);

                foreach (var userPass in userPasses)
                {
                    var temp = new Responses.GymResponse
                    {
                        name        = userPass.Gym.GymName,
                        description = userPass.Gym.GymInfo,
                        gymId       = userPass.GymId,
                        pictureUrl  = GymSearchListHelper.getPictureUrl(userPass.Gym.GymPhotoGalleries),
                        price       = userPass.Gym.PriceToCharge,
                        city        = userPass.Gym.ContactInfo.Address.City,
                        state       = userPass.Gym.ContactInfo.Address.TypeState.StateAbbreviation,
                        gymUrl      = userPass.Gym.Url ?? "",
                        isActive    = userPass.Gym.IsActive,
                        address     = userPass.Gym.ContactInfo.Address.StreetLine1 + " " + userPass.Gym.ContactInfo.Address.StreetLine2 + "," +
                                      userPass.Gym.ContactInfo.Address.City + ","
                                      + userPass.Gym.ContactInfo.Address.TypeState.StateAbbreviation + "," + userPass.Gym.ContactInfo.Address.Zip,
                        phone = userPass.Gym.ContactInfo.Phone,


                        timeBought                 = userPass.LocalDateBought,
                        displayTimeBought          = userPass.LocalDateBought.ToString("MMM d, yyyy").ToUpper(),
                        localGymDateTimeExpiration = userPass.LocalDateExpired.ToString("MMM d, yyyy").ToUpper(),
                        latitude  = userPass.Gym.Position.Latitude ?? 0,
                        longitude = userPass.Gym.Position.Longitude ?? 0,
                        // user position not known so miles not known
                        // it isn't needed to be known here though
                        miles = 0,
                    };
                    user.purchasedGyms.Add(temp);
                }


                // TODO: ONCE TIMEZONE IS SAVED, FILTER OUT EXPIRED PASSES


                return(new AllDataResponse {
                    user = user, message = "Success!", success = true, status = 3, authToken = userItem.CurrentToken
                });
            }
        }
Пример #19
0
        public static BasicResponse deleteGymImplementation(deleteGymRequest request)
        {
            if (!Constants.isApiStaging)
            {
                return(new BasicResponse()
                {
                    success = false, status = 404, message = ""
                });
            }

            if (request.authToken != Constants.MarketingToken)
            {
                return new BasicResponse()
                       {
                           success = false, status = 404, message = "Wrong Token"
                       }
            }
            ;

            using (var db = new UniversalGymEntities())
            {
                var gym = db.Gyms.FirstOrDefault(cs => cs.GymId == request.gymId);

                if (gym == null)
                {
                    return(new BasicResponse {
                        message = "Gym not found!", status = 404, success = false
                    });
                }

                // delete gym invoices TODO
                // delete gym pass TODO


                // delete gym photogallery
                if (gym.GymPhotoGalleries != null)
                {
                    db.GymPhotoGalleries.RemoveRange(gym.GymPhotoGalleries);
                }

                // delete address of public contact
                if (gym.ContactInfo1.Address != null)
                {
                    db.Addresses.Remove(gym.ContactInfo1.Address);
                }

                // delete public contact
                if (gym.ContactInfo1 != null)
                {
                    db.ContactInfoes.Remove(gym.ContactInfo1);
                }

                // delete address of owner contact
                if (gym.ContactInfo.Address != null)
                {
                    db.Addresses.Remove(gym.ContactInfo.Address);
                }

                // delete owner contact
                if (gym.ContactInfo != null)
                {
                    db.ContactInfoes.Remove(gym.ContactInfo);
                }

                // delete gym
                db.Gyms.Remove(gym);
                db.SaveChanges();
            }

            return(new BasicResponse()
            {
                success = true, status = 200, message = "Success"
            });
        }
    }
Пример #20
0
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                // example:

                /*json = {
                 *  token = gIkuvaNzQIHg97ATvDxqgjtO
                 *  team_id = T0001
                 *  team_domain = example
                 *  channel_id = C2147483705
                 *  channel_name = test
                 *  user_id = U2147483697
                 *  user_name = Steve
                 *  command =/ weather
                 *  text = 94070
                 *  response_url = https://hooks.slack.com/commands/1234/5678
                 * }*/

                Logs.LogsInsertAction("Slack command attempted");

                if (context == null || context.Request["token"] == null || context.Request["text"] == null || context.Request["response_url"] == null)
                {
                    return;
                }

                string token = context.Request["token"];
                string text  = context.Request["text"];
                string url   = context.Request["response_url"];

                if (token.Equals("sru5Fa7oNZ1jyxaLgbBKDpK1"))
                {
                    var commandArray = text.Split(' ');
                    foreach (string thisCommand in commandArray)
                    {
                        commandQueue.Enqueue(thisCommand);
                    }

                    using (var db = new UniversalGymEntities())
                    {
                        if (commandQueue.Count > 0)
                        {
                            var command = commandQueue.Dequeue();
                            if (command.Equals("help"))
                            {
                                var message =
                                    "COMMANDS:"
                                    + Environment.NewLine
                                    + "WEB CACHING"
                                    + Environment.NewLine
                                    + "cache reset"
                                    + Environment.NewLine
                                    + "cache development - 'Development Mode' turns off the cache for 3 hours"
                                    + Environment.NewLine
                                    + "cache devstatus - Returns time in seconds development mode"
                                    + Environment.NewLine
                                    + Environment.NewLine
                                    + "STATISTICS"
                                    + Environment.NewLine
                                    + "summary"
                                    + Environment.NewLine
                                    + "gympass summary"
                                    + Environment.NewLine
                                    + "user summary"
                                    + Environment.NewLine
                                    + "gym summary"
                                    + Environment.NewLine
                                    + "searchrequests summary"
                                    + Environment.NewLine
                                    + "givecredits summary"
                                    + Environment.NewLine
                                    + Environment.NewLine
                                    + "OPTIONAL COMMAND FILTERS (add to end of command):"
                                    + Environment.NewLine
                                    + "Example:"
                                    + Environment.NewLine
                                    + "      /pedal gym summary from 2008 to 2009/12/31 23:59:59 compare from 2010 show"
                                    + Environment.NewLine
                                    + "Shows to everyone in channel the stats of all gyms from the start of 2008 to the end of 2009 compared to the stats of all gyms from 2010 to now"
                                    + Environment.NewLine
                                    + Environment.NewLine
                                    + "DATERANGE: summarizes information only in daterange"
                                    + Environment.NewLine
                                    + "DATERANGE compare from DATERANGE: summarizes information only in daterange and compares changes from another daterange"
                                    + Environment.NewLine
                                    + "show : shows response to everyone in the channel (must be after other filters)"
                                    + Environment.NewLine
                                    + "DATERANGE is one of:"
                                    + Environment.NewLine
                                    + "from DATE : from a date to now"
                                    + Environment.NewLine
                                    + "from DATE to DATE: from a date to another date"
                                    + Environment.NewLine
                                    + Environment.NewLine
                                    + "DATE is one of:"
                                    + Environment.NewLine
                                    + "now: Right now"
                                    + Environment.NewLine
                                    + "2008 : The start of a year"
                                    + Environment.NewLine
                                    + "2008/02 : The start of a month"
                                    + Environment.NewLine
                                    + "2008/02/14 : The start of a day"
                                    + Environment.NewLine
                                    + "2008/02/14 14 : The start of an hour"
                                    + Environment.NewLine
                                    + "2008/02/14 14:50 : The start of a minute"
                                    + Environment.NewLine
                                    + "2008/02/14 14:50:50 : The start of a second";

                                sendMessageAsync(message, getResponseType(false), url);
                            }
                            else if (command.Equals("cache"))
                            {
                                runCloudflareMessage(url);
                            }
                            else if (command.Equals("summary"))
                            {
                                var message      = "";
                                var responseType = false;

                                if (commandQueue.Count > 0)
                                {
                                    var filter = commandQueue.Peek();
                                    if (filter.Equals("from"))
                                    {
                                        filter = commandQueue.Dequeue();
                                        Tuple <DateTime?, DateTime?, DateTime?, DateTime?> fromDates = fromFilter();


                                        if (fromDates.Item1 != null && fromDates.Item3 != null)
                                        {
                                            var toDate        = fromDates.Item2 ?? DateTime.Now;
                                            var compareToDate = fromDates.Item4 ?? DateTime.Now;


                                            var fromGymPassCount    = db.GymPasses.Where(x => x.ServerTimeDateBought >= fromDates.Item1 && x.ServerTimeDateBought < toDate).ToList().Count;
                                            var compareGymPassCount = db.GymPasses.Where(x => x.ServerTimeDateBought >= fromDates.Item3 && x.ServerTimeDateBought < compareToDate).ToList().Count;
                                            var fromGymCount        = db.Gyms.Where(x => x.ActiveDate >= fromDates.Item1 && x.ActiveDate < toDate).ToList().Count;
                                            var compareGymCount     = db.Gyms.Where(x => x.ActiveDate >= fromDates.Item3 && x.ActiveDate < compareToDate).ToList().Count;
                                            var fromUserCount       = db.Users.Where(x => x.joinDate >= fromDates.Item1 && x.joinDate < toDate).ToList().Count;
                                            var compareUserCount    = db.Users.Where(x => x.joinDate >= fromDates.Item3 && x.joinDate < compareToDate).ToList().Count;

                                            var passData =
                                                from gp in db.GymPasses
                                                group gp by 1 into g
                                                select new
                                            {
                                                fromTotalCost           = g.Where(x => x.ServerTimeDateBought >= fromDates.Item1 && x.ServerTimeDateBought < toDate).Sum(x => x.GymPassCost),
                                                compareTotalCost        = g.Where(x => x.ServerTimeDateBought >= fromDates.Item3 && x.ServerTimeDateBought < compareToDate).Sum(x => x.GymPassCost),
                                                fromTotalCreditsUsed    = g.Where(x => x.ServerTimeDateBought >= fromDates.Item1 && x.ServerTimeDateBought < toDate).Sum(x => x.CreditsUsed),
                                                compareTotalCreditsUsed = g.Where(x => x.ServerTimeDateBought >= fromDates.Item3 && x.ServerTimeDateBought < compareToDate).Sum(x => x.CreditsUsed),
                                                fromTotalCharged        = g.Where(x => x.ServerTimeDateBought >= fromDates.Item1 && x.ServerTimeDateBought < toDate).Sum(x => x.AmountCharged),
                                                compareTotalCharged     = g.Where(x => x.ServerTimeDateBought >= fromDates.Item3 && x.ServerTimeDateBought < compareToDate).Sum(x => x.AmountCharged),
                                            };

                                            var fromPassRevenue    = 0;
                                            var comparePassRevenue = 0;
                                            var fromCosts          = 0;
                                            var compareCosts       = 0;
                                            if (passData.SingleOrDefault() != null)
                                            {
                                                fromPassRevenue    = passData.SingleOrDefault().fromTotalCharged + passData.SingleOrDefault().compareTotalCreditsUsed;
                                                comparePassRevenue = passData.SingleOrDefault().compareTotalCharged + passData.SingleOrDefault().compareTotalCreditsUsed;
                                                fromCosts          = passData.SingleOrDefault().fromTotalCost;
                                                compareCosts       = passData.SingleOrDefault().compareTotalCost;
                                            }


                                            var giveCreditData =
                                                from gp in db.GiveCredits
                                                group gp by 1 into g
                                                select new
                                            {
                                                fromTotalCredit    = g.Where(x => x.DateTime >= fromDates.Item1 && x.DateTime < toDate).Sum(x => x.AmountCharged),
                                                compareTotalCredit = g.Where(x => x.DateTime >= fromDates.Item3 && x.DateTime < compareToDate).Sum(x => x.AmountCharged),
                                            };
                                            var fromRevenue    = 0;
                                            var compareRevenue = 0;
                                            if (giveCreditData.SingleOrDefault() != null)
                                            {
                                                fromRevenue    = giveCreditData.SingleOrDefault().fromTotalCredit ?? 0;
                                                compareRevenue = giveCreditData.SingleOrDefault().compareTotalCredit ?? 0;
                                            }

                                            var gymData =
                                                from gp in db.GymInvoices
                                                group gp by 1 into g
                                                select new
                                            {
                                                fromUncollected    = g.Where(x => x.IsCollected == false && x.StartPeriodDate >= fromDates.Item1 && x.StartPeriodDate < toDate).Sum(x => x.AmountPaid),
                                                compareUncollected = g.Where(x => x.IsCollected == false && x.StartPeriodDate >= fromDates.Item3 && x.StartPeriodDate < compareToDate).Sum(x => x.AmountPaid),
                                            };

                                            var fromUncollectedPayment    = 0;
                                            var compareUncollectedPayment = 0;
                                            if (gymData.SingleOrDefault() != null)
                                            {
                                                fromUncollectedPayment    = gymData.SingleOrDefault().fromUncollected;
                                                compareUncollectedPayment = gymData.SingleOrDefault().compareUncollected;
                                            }

                                            var fromUnusedCredits    = db.Users.AsEnumerable().Where(x => x.joinDate >= fromDates.Item1 && x.joinDate < toDate).Sum(x => x.Credits);
                                            var compareUnusedCredits = db.Users.AsEnumerable().Where(x => x.joinDate >= fromDates.Item3 && x.joinDate < compareToDate).Sum(x => x.Credits);

                                            var fromKnownprofit    = fromRevenue - fromCosts - fromUnusedCredits;
                                            var compareKnownprofit = compareRevenue - compareCosts - compareUnusedCredits;


                                            message = "Summary from " + fromDates.Item1 + " to " + toDate + " compared from " + fromDates.Item3 + " to " + compareToDate
                                                      + Environment.NewLine
                                                      + "+ Revenue: "
                                                      + formatDollarComparison(fromRevenue, compareRevenue)
                                                      + Environment.NewLine
                                                      + "- Costs: "
                                                      + formatDollarComparison(fromCosts, compareCosts)
                                                      + Environment.NewLine
                                                      + "- Unused Credits: "
                                                      + formatDollarComparison(fromUnusedCredits, compareUnusedCredits)
                                                      + Environment.NewLine
                                                      + " = Known Profit: "
                                                      + formatDollarComparison(fromKnownprofit, compareKnownprofit)
                                                      + Environment.NewLine
                                                      + Environment.NewLine
                                                      + "Pass Revenue: "
                                                      + formatDollarComparison(fromPassRevenue, comparePassRevenue)
                                                      + Environment.NewLine
                                                      + "Uncollected Gym Payments (in costs): "
                                                      + formatDollarComparison(fromUncollectedPayment, compareUncollectedPayment)
                                                      + Environment.NewLine
                                                      + "Number of gym passes: "
                                                      + formatComparison(fromGymPassCount, compareGymPassCount)
                                                      + Environment.NewLine
                                                      + "Number of users: "
                                                      + formatComparison(fromUserCount, compareUserCount)
                                                      + Environment.NewLine
                                                      + "Number of gyms: "
                                                      + formatComparison(fromGymCount, compareGymCount)
                                                      + Environment.NewLine;
                                        }
                                        else if (fromDates.Item1 != null && fromDates.Item3 == null)
                                        {
                                            var toDate = fromDates.Item2 ?? DateTime.Now;


                                            var gymPassCount = db.GymPasses.Where(x => x.ServerTimeDateBought >= fromDates.Item1 && x.ServerTimeDateBought < toDate).ToList().Count;
                                            var gymCount     = db.Gyms.Where(x => x.ActiveDate >= fromDates.Item1 && x.ActiveDate < toDate).ToList().Count;
                                            var userCount    = db.Users.Where(x => x.joinDate >= fromDates.Item1 && x.joinDate < toDate).ToList().Count;

                                            var passData =
                                                from gp in db.GymPasses.Where(x => x.ServerTimeDateBought >= fromDates.Item1 && x.ServerTimeDateBought < toDate)
                                                group gp by 1 into g
                                                select new
                                            {
                                                totalCost        = g.Sum(x => x.GymPassCost),
                                                totalCreditsUsed = g.Sum(x => x.CreditsUsed),
                                                totalCharged     = g.Sum(x => x.AmountCharged),
                                            };
                                            var passRevenue = 0;
                                            var costs       = 0;
                                            if (passData.SingleOrDefault() != null)
                                            {
                                                passRevenue = passData.SingleOrDefault().totalCharged + passData.SingleOrDefault().totalCreditsUsed;
                                                costs       = passData.SingleOrDefault().totalCost;
                                            }

                                            var giveCreditData =
                                                from gp in db.GiveCredits.Where(x => x.DateTime >= fromDates.Item1 && x.DateTime < toDate)
                                                group gp by 1 into g
                                                select new
                                            {
                                                totalCredit = g.Sum(x => x.AmountCharged),
                                            };
                                            var revenue = 0;
                                            if (giveCreditData.SingleOrDefault() != null)
                                            {
                                                revenue = giveCreditData.SingleOrDefault().totalCredit ?? 0;
                                            }

                                            var gymData =
                                                from gp in db.GymInvoices.Where(x => x.StartPeriodDate >= fromDates.Item1 && x.StartPeriodDate < toDate)
                                                group gp by 1 into g
                                                select new
                                            {
                                                uncollected = g.Where(x => x.IsCollected == false).Sum(x => x.AmountPaid),
                                            };

                                            var uncollectedPayment = 0;
                                            if (gymData.SingleOrDefault() != null)
                                            {
                                                uncollectedPayment = gymData.SingleOrDefault().uncollected;
                                            }
                                            var userData =
                                                from gp in db.Users.Where(x => x.joinDate >= fromDates.Item1 && x.joinDate < toDate)
                                                group gp by 1 into g
                                                select new
                                            {
                                                unused = g.Sum(x => x.Credits),
                                            };
                                            var unusedCredits = 0;
                                            if (userData.SingleOrDefault() != null)
                                            {
                                                unusedCredits = userData.SingleOrDefault().unused;
                                            }

                                            var knownprofit = revenue - costs - unusedCredits;


                                            message = "Summary from " + fromDates.Item1 + " to " + toDate
                                                      + Environment.NewLine
                                                      + "+ Revenue: "
                                                      + formatDollar(revenue)
                                                      + Environment.NewLine
                                                      + "- Costs: "
                                                      + formatDollar(costs)
                                                      + Environment.NewLine
                                                      + "- Unused Credits: "
                                                      + formatDollar(unusedCredits)
                                                      + Environment.NewLine
                                                      + " = Known Profit: "
                                                      + formatDollar(knownprofit)
                                                      + Environment.NewLine
                                                      + Environment.NewLine
                                                      + "Pass Revenue: "
                                                      + formatDollar(passRevenue)
                                                      + Environment.NewLine
                                                      + "Uncollected Gym Payments (in costs): "
                                                      + formatDollar(uncollectedPayment)
                                                      + Environment.NewLine
                                                      + "Number of gym passes: "
                                                      + gymPassCount
                                                      + Environment.NewLine
                                                      + "Number of users: "
                                                      + userCount
                                                      + Environment.NewLine
                                                      + "Number of gyms: "
                                                      + gymCount
                                                      + Environment.NewLine;
                                        }
                                    }

                                    while (commandQueue.Count > 0)
                                    {
                                        if (commandQueue.Dequeue().Equals("show"))
                                        {
                                            responseType = true;
                                        }
                                    }
                                }

                                if (message.Equals(""))
                                {
                                    var gymPassCount = db.GymPasses.ToList().Count;
                                    var gymCount     = db.Gyms.ToList().Count;
                                    var userCount    = db.Users.ToList().Count;

                                    var passData =
                                        from gp in db.GymPasses
                                        group gp by 1 into g
                                        select new
                                    {
                                        totalCost        = g.Sum(x => x.GymPassCost),
                                        totalCreditsUsed = g.Sum(x => x.CreditsUsed),
                                        totalCharged     = g.Sum(x => x.AmountCharged),
                                    };
                                    var passRevenue = 0;
                                    var costs       = 0;
                                    if (passData.SingleOrDefault() != null)
                                    {
                                        passRevenue = passData.SingleOrDefault().totalCharged + passData.SingleOrDefault().totalCreditsUsed;
                                        costs       = passData.SingleOrDefault().totalCost;
                                    }

                                    var giveCreditData =
                                        from gp in db.GiveCredits
                                        group gp by 1 into g
                                        select new
                                    {
                                        totalCredit = g.Sum(x => x.AmountCharged),
                                    };
                                    var revenue = 0;
                                    if (giveCreditData.SingleOrDefault() != null)
                                    {
                                        revenue = giveCreditData.SingleOrDefault().totalCredit ?? 0;
                                    }

                                    var gymData =
                                        from gp in db.GymInvoices
                                        group gp by 1 into g
                                        select new
                                    {
                                        uncollected = g.Where(x => x.IsCollected == false).Sum(x => x.AmountPaid),
                                    };

                                    var uncollectedPayment = 0;
                                    if (gymData.SingleOrDefault() != null)
                                    {
                                        uncollectedPayment = gymData.SingleOrDefault().uncollected;
                                    }

                                    var userData =
                                        from gp in db.Users
                                        group gp by 1 into g
                                        select new
                                    {
                                        unused = g.Sum(x => x.Credits),
                                    };
                                    var unusedCredits = 0;
                                    if (userData.SingleOrDefault() != null)
                                    {
                                        unusedCredits = userData.SingleOrDefault().unused;
                                    }

                                    var knownprofit = revenue - costs - unusedCredits;


                                    message = "Summary: "
                                              + Environment.NewLine
                                              + "+ Revenue: "
                                              + formatDollar(revenue)
                                              + Environment.NewLine
                                              + "- Costs: "
                                              + formatDollar(costs)
                                              + Environment.NewLine
                                              + "- Unused Credits: "
                                              + formatDollar(unusedCredits)
                                              + Environment.NewLine
                                              + " = Known Profit: "
                                              + formatDollar(knownprofit)
                                              + Environment.NewLine
                                              + Environment.NewLine
                                              + "Pass Revenue: "
                                              + formatDollar(passRevenue)
                                              + Environment.NewLine
                                              + "Uncollected Gym Payments (in costs): "
                                              + formatDollar(uncollectedPayment)
                                              + Environment.NewLine
                                              + "Number of gym passes: "
                                              + gymPassCount
                                              + Environment.NewLine
                                              + "Number of users: "
                                              + userCount
                                              + Environment.NewLine
                                              + "Number of gyms: "
                                              + gymCount
                                              + Environment.NewLine;
                                }
                                sendMessageAsync(message, getResponseType(responseType), url);
                            }
                            else if (command.Equals("gympass"))
                            {
                                if (commandQueue.Count > 0 && commandQueue.Dequeue().Equals("summary"))
                                {
                                    sendMessageAsync("There is no information at this time, please tell james what data should go here!", getResponseType(false), url);
                                }
                            }
                            else if (command.Equals("user"))
                            {
                                if (commandQueue.Count > 0 && commandQueue.Dequeue().Equals("summary"))
                                {
                                    sendMessageAsync("There is no information at this time, please tell james what data should go here!", getResponseType(false), url);
                                }
                            }
                            else if (command.Equals("gym"))
                            {
                                if (commandQueue.Count > 0 && commandQueue.Dequeue().Equals("summary"))
                                {
                                    sendMessageAsync("There is no information at this time, please tell james what data should go here!", getResponseType(false), url);
                                }
                            }
                            else if (command.Equals("searchrequests"))
                            {
                                if (commandQueue.Count > 0 && commandQueue.Dequeue().Equals("summary"))
                                {
                                    sendMessageAsync("There is no information at this time, please tell james what data should go here!", getResponseType(false), url);
                                }
                            }
                            else if (command.Equals("givecredits"))
                            {
                                if (commandQueue.Count > 0 && commandQueue.Dequeue().Equals("summary"))
                                {
                                    sendMessageAsync("There is no information at this time, please tell james what data should go here!", getResponseType(false), url);
                                }
                            }
                        }
                    }


                    sendMessageAsync("Your command was invalid, type /pedal help to see valid commands.", getResponseType(false), url);
                }
            }
            catch (Exception exception)
            {
                Logs.LogsInsertError(exception);
            }
        }
Пример #21
0
        public static AllDataResponse appSignUpImplementation(AppSignUpRequest request)
        {
            if (String.IsNullOrWhiteSpace(request.email))
            {
                return(new AllDataResponse
                {
                    message = "Please enter an email.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.firstName))
            {
                return(new AllDataResponse
                {
                    message = "Please enter a first name.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.lastName))
            {
                return(new AllDataResponse
                {
                    message = "Please enter a last name.",
                    status = 404,
                    success = false,
                });
            }



            if (MembershipHelper.emailAlreadyExists(request.email, Constants.UserRole))
            {
                return(new AllDataResponse {
                    message = "Email is already taken", status = 10, success = false
                });
            }
            else if (String.IsNullOrWhiteSpace(request.password) || request.password.Length < 6)
            {
                return(new AllDataResponse {
                    message = "Please enter a password at least 6 characters long", status = 10, success = false
                });
            }

            var newUserGuid = MembershipHelper.createMembership(request.email, request.password, Constants.UserRole);
            var userId      = 0;

            using (var db = new UniversalGymEntities())
            {
                var newCode = UserCode.GenerateDistinctCode(db);
                var user    = new User
                {
                    FirstName             = request.firstName,
                    LastName              = request.lastName,
                    ReferalUrl            = newCode,
                    UserGuid              = newUserGuid,
                    Email                 = request.email.ToLower(),
                    hasActiveSubscription = false,
                    hasCreditCard         = false,
                    joinDate              = DateTime.Now,
                    Credits               = 0,
                };
                db.Users.Add(user);
                db.SaveChanges();
                userId = user.UserId;



                var newuserbody = "User Signup"
                                  + Environment.NewLine
                                  + "Email: "
                                  + user.Email
                                  + Environment.NewLine
                                  + "Name: "
                                  + user.FirstName
                                  + user.LastName;

                SlackHelper.sendUserSignupChannel(newuserbody);
            }

            EmailTemplateHelper.SendEmail("Welcome to Pedal", request.email, "http://pedal.com", request.firstName, "user_signup.html");

            return(allDataHelper.CreateAllDataResponse(userId, true));
        }
Пример #22
0
 public creditAdd(UniversalGymEntities db)
 {
     this.Db = db;
 }
Пример #23
0
        public static BasicResponse airbnbRegisterImplementation(AirbnbRegisterRequest request)
        {
            if (String.IsNullOrWhiteSpace(request.email))
            {
                return(new BasicResponse
                {
                    message = "Please enter an email.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.firstName))
            {
                return(new BasicResponse
                {
                    message = "Please enter a first name.",
                    status = 404,
                    success = false,
                });
            }

            if (String.IsNullOrWhiteSpace(request.lastName))
            {
                return(new BasicResponse
                {
                    message = "Please enter a last name.",
                    status = 404,
                    success = false,
                });
            }


            if (MembershipHelper.emailAlreadyExists(request.email, Constants.UserRole))
            {
                return(new BasicResponse {
                    message = "Email is already taken", status = 10, success = false
                });
            }
            else if (String.IsNullOrWhiteSpace(request.password) || request.password.Length < 6)
            {
                return(new BasicResponse {
                    message = "Please enter a password at least 6 characters long", status = 10, success = false
                });
            }



            if (!request.password.Equals(request.confirmPassword))
            {
                return(new BasicResponse
                {
                    message = "Passwords do not match",
                    status = 404,
                    success = false,
                });
            }

            var newUserGuid = MembershipHelper.createMembership(request.email, request.password, Constants.UserRole);
            var userId      = 0;

            using (var db = new UniversalGymEntities())
            {
                var newCode = UserCode.GenerateDistinctCode(db);
                var user    = new User
                {
                    FirstName             = request.firstName,
                    LastName              = request.lastName,
                    ReferalUrl            = newCode,
                    UserGuid              = newUserGuid,
                    Email                 = request.email.ToLower(),
                    hasActiveSubscription = true,
                    hasCreditCard         = false,
                    joinDate              = DateTime.Now,
                    Credits               = 0,
                };
                db.Users.Add(user);
                db.SaveChanges();
                userId = user.UserId;



                var newuserbody = "User Signup"
                                  + Environment.NewLine
                                  + "Email: "
                                  + user.Email
                                  + Environment.NewLine
                                  + "Name: "
                                  + user.FirstName
                                  + user.LastName
                                  + Environment.NewLine
                                  + "Airbnb Host: https://www.airbnb.com/users/show/"
                                  + request.airbnbHostId;



                SlackHelper.sendUserSignupChannel(newuserbody);
            }

            EmailTemplateHelper.SendEmail("Welcome to Pedal", request.email, "http://pedal.com", request.firstName, "user_signup.html");

            return(new BasicResponse
            {
                message = "Account created! Just download the Pedal Fitness app and login!",
                status = 200,
                success = true,
            });
        }
        public static UpdateCardResponse UpdateCardInfo(CreditCardDataRequest request, StripeAction stripeAction)
        {
            //validate incoming data
            if (String.IsNullOrWhiteSpace(request.token))
            {
                return(new UpdateCardResponse {
                    message = "Missing token.", status = 601, success = false
                });
            }

            if (request == null || String.IsNullOrWhiteSpace(request.authToken) || request.accountId == null)
            {
                return(new UpdateCardResponse
                {
                    message = "User not found.",
                    status = 404,
                    success = false,
                });
            }


            using (var db = new UniversalGymEntities())
            {
                var user = db.Users.SingleOrDefault(a => a.CurrentToken == request.authToken && a.UserId == request.accountId);
                if (user == null)
                {
                    return(new UpdateCardResponse
                    {
                        message = "User not found.",
                        status = 404,
                        success = false,
                    });
                }

                var message = "";
                // temporarily add credits to frontend so user immediately sees money
                var shouldAddCredits = false;

                // empty stripe url means new customer
                if (String.IsNullOrWhiteSpace(user.StripeUrl))
                {
                    message          = "Card added successfully.";
                    shouldAddCredits = true;
                }

                // has active subscription already means updating card
                if (user.hasActiveSubscription)
                {
                    message          = "Card updated successfully.";
                    shouldAddCredits = false;
                }
                // does not have active subscription means re-activating card
                else
                {
                    message          = "Card re-activated successfully.";
                    shouldAddCredits = true;
                }



                user.StripeUrl = stripeAction(request.token, user);
                db.SaveChanges();

                return(new UpdateCardResponse {
                    message = message,
                    status = 200,
                    success = true,
                    shouldAddCredits = shouldAddCredits
                });
            }
        }
Пример #25
0
        public static getAllGymsResponse getAllGymsImplementation(BaseRequest request)
        {
            if (request.authToken != Constants.MarketingToken)
            {
                return new getAllGymsResponse()
                       {
                           success = false, status = 404, message = "Wrong Token"
                       }
            }
            ;

            var rv = new getAllGymsResponse();

            rv.totalStatsGyms = new Responses.totalStatsGyms();
            rv.totalStatsGyms.GymPassCount         = 0;
            rv.totalStatsGyms.TotalRevenue         = 0;
            rv.totalStatsGyms.TotalCosts           = 0;
            rv.totalStatsGyms.TotalPayNotCollected = 0;
            rv.totalStatsGyms.TotalProfit          = 0;


            rv.gyms = new List <Gyms>();
            using (var db = new UniversalGymEntities())
            {
                var gyms = db.Gyms.ToList();

                foreach (var gym in gyms)
                {
                    var temp = new Gyms
                    {
                        GymId             = gym.GymId.ToString() ?? "NULL",
                        GymName           = gym.GymName ?? "NULL",
                        GymInfo           = gym.GymInfo ?? "NULL",
                        ApplicationDate   = gym.ApplicationDate.ToString() ?? "NULL",
                        IsActive          = gym.IsActive.ToString() ?? "NULL",
                        CreditDollarValue = gym.CreditDollarValue.ToString() ?? "NULL",
                        GymGuid           = gym.GymGuid.ToString() ?? "NULL",
                        IsApproved        = gym.IsApproved.ToString() ?? "NULL",
                        Url           = gym.Url ?? "NULL",
                        OwnerName     = gym.OwnerName ?? "NULL",
                        PriceToCharge = gym.PriceToCharge.ToString() ?? "NULL",
                        CurrentToken  = gym.CurrentToken ?? "NULL",
                        ScheduleUrl   = gym.ScheduleUrl ?? "NULL",
                        StripeUrl     = gym.StripeUrl ?? "NULL",
                        ActiveDate    = gym.ActiveDate.ToString() ?? "NULL",
                    };
                    // Set Position
                    if (gym.Position != null)
                    {
                        temp.Position           = new Position();
                        temp.Position.Latitude  = gym.Position.Latitude.ToString() ?? "NULL";
                        temp.Position.Longitude = gym.Position.Longitude.ToString() ?? "NULL";
                    }

                    // Set Public Contact
                    temp.PublicContactInfo = new Responses.ContactInfo();
                    temp.PublicContactInfo.ContactInfoId = gym.ContactInfo1.ContactInfoId.ToString() ?? "NULL";
                    temp.PublicContactInfo.Email         = gym.ContactInfo1.Email ?? "NULL";
                    temp.PublicContactInfo.Phone         = gym.ContactInfo1.Phone ?? "NULL";

                    if (gym.ContactInfo1.Address != null)
                    {
                        // Set Public Contact Address
                        temp.PublicContactInfo.Address             = new Responses.Address();
                        temp.PublicContactInfo.Address.AddressId   = gym.ContactInfo1.Address.AddressId.ToString() ?? "NULL";
                        temp.PublicContactInfo.Address.StreetLine1 = gym.ContactInfo1.Address.StreetLine1 ?? "NULL";
                        temp.PublicContactInfo.Address.StreetLine2 = gym.ContactInfo1.Address.StreetLine2 ?? "NULL";
                        temp.PublicContactInfo.Address.City        = gym.ContactInfo1.Address.City ?? "NULL";
                        temp.PublicContactInfo.Address.Zip         = gym.ContactInfo1.Address.Zip ?? "NULL";

                        // Set Public Contact Address State
                        temp.PublicContactInfo.Address.TypeState                   = new Responses.TypeState();
                        temp.PublicContactInfo.Address.TypeState.TypeStateId       = gym.ContactInfo1.Address.TypeState.TypeStateId.ToString() ?? "NULL";
                        temp.PublicContactInfo.Address.TypeState.StateName         = gym.ContactInfo1.Address.TypeState.StateName ?? "NULL";
                        temp.PublicContactInfo.Address.TypeState.StateAbbreviation = gym.ContactInfo1.Address.TypeState.StateAbbreviation ?? "NULL";
                    }

                    // Set Owner Contact
                    temp.OwnerContactInfo = new Responses.ContactInfo();
                    temp.OwnerContactInfo.ContactInfoId = gym.ContactInfo.ContactInfoId.ToString() ?? "NULL";
                    temp.OwnerContactInfo.Email         = gym.ContactInfo.Email ?? "NULL";
                    temp.OwnerContactInfo.Phone         = gym.ContactInfo.Phone ?? "NULL";

                    if (gym.ContactInfo.Address != null)
                    {
                        // Set Owner Contact Address
                        temp.OwnerContactInfo.Address             = new Responses.Address();
                        temp.OwnerContactInfo.Address.AddressId   = gym.ContactInfo.Address.AddressId.ToString() ?? "NULL";
                        temp.OwnerContactInfo.Address.StreetLine1 = gym.ContactInfo.Address.StreetLine1 ?? "NULL";
                        temp.OwnerContactInfo.Address.StreetLine2 = gym.ContactInfo.Address.StreetLine2 ?? "NULL";
                        temp.OwnerContactInfo.Address.City        = gym.ContactInfo.Address.City ?? "NULL";
                        temp.OwnerContactInfo.Address.Zip         = gym.ContactInfo.Address.Zip ?? "NULL";

                        // Set Owner Contact Address State
                        temp.OwnerContactInfo.Address.TypeState                   = new Responses.TypeState();
                        temp.OwnerContactInfo.Address.TypeState.TypeStateId       = gym.ContactInfo.Address.TypeState.TypeStateId.ToString() ?? "NULL";
                        temp.OwnerContactInfo.Address.TypeState.StateName         = gym.ContactInfo.Address.TypeState.StateName ?? "NULL";
                        temp.OwnerContactInfo.Address.TypeState.StateAbbreviation = gym.ContactInfo.Address.TypeState.StateAbbreviation ?? "NULL";
                    }
                    // Set GymPhotoGalleries
                    temp.GymPhotoGalleries = new List <Responses.GymPhotoGallery>();
                    foreach (var thisGymPhotoGallery in gym.GymPhotoGalleries)
                    {
                        var tempGymPhotoGallery = new Responses.GymPhotoGallery
                        {
                            GymPhotoGalleryId = thisGymPhotoGallery.GymPhotoGalleryId.ToString() ?? "NULL",
                            IsCoverPhoto      = thisGymPhotoGallery.IsCoverPhoto.ToString() ?? "NULL",
                            Photo             = thisGymPhotoGallery.Photo ?? "NULL",
                        };

                        temp.GymPhotoGalleries.Add(tempGymPhotoGallery);
                    }

                    temp.GymPassCount = gym.GymPasses.Count;
                    rv.totalStatsGyms.GymPassCount = rv.totalStatsGyms.GymPassCount + temp.GymPassCount;

                    if (gym.GymPasses.Count > 0)
                    {
                        var totalRevenue =
                            from gp in gym.GymPasses
                            group gp by 1 into g
                            select new
                        {
                            totalCredit  = g.Sum(x => x.CreditsUsed),
                            totalCharged = g.Sum(x => x.AmountCharged),
                            totalCost    = g.Sum(x => x.GymPassCost)
                        };

                        temp.TotalRevenue = totalRevenue.SingleOrDefault().totalCredit + totalRevenue.SingleOrDefault().totalCharged;
                        temp.TotalCosts   = totalRevenue.SingleOrDefault().totalCost;
                        temp.TotalProfit  =
                            (totalRevenue.SingleOrDefault().totalCredit + totalRevenue.SingleOrDefault().totalCharged)
                            - totalRevenue.SingleOrDefault().totalCost;

                        rv.totalStatsGyms.TotalRevenue = rv.totalStatsGyms.TotalRevenue + temp.TotalRevenue;
                        rv.totalStatsGyms.TotalCosts   = rv.totalStatsGyms.TotalCosts + temp.TotalCosts;
                        rv.totalStatsGyms.TotalProfit  = rv.totalStatsGyms.TotalProfit + temp.TotalProfit;

                        if (gym.GymInvoices.Count > 0)
                        {
                            int totalCollected = gym.GymInvoices.Where(t => t.IsCollected == true).Select(t => t.AmountPaid).DefaultIfEmpty(0).Sum();
                            temp.TotalPayNotCollected = totalRevenue.SingleOrDefault().totalCost - totalCollected;
                            rv.totalStatsGyms.TotalPayNotCollected = rv.totalStatsGyms.TotalPayNotCollected + temp.TotalPayNotCollected;
                        }
                    }

                    rv.gyms.Add(temp);
                }
            }
            rv.success = true;
            rv.message = "";

            return(rv);
        }
    }
        public static getAllGymPassesResponse getAllGymPassesImplementation(BaseRequest request)
        {
            if (request.authToken != Constants.MarketingToken)
            {
                return new getAllGymPassesResponse()
                       {
                           success = false, status = 404, message = "Wrong Token"
                       }
            }
            ;

            var rv = new getAllGymPassesResponse();


            rv.gymPasses                         = new List <Responses.GymPasses>();
            rv.totalStatsGymPasses               = new totalStatsGymPasses();
            rv.totalStatsGymPasses.GymPassCost   = 0;
            rv.totalStatsGymPasses.GymPassProfit = 0;
            rv.totalStatsGymPasses.CreditsUsed   = 0;
            rv.totalStatsGymPasses.AmountCharged = 0;


            using (var db = new UniversalGymEntities())
            {
                var gymPasses = db.GymPasses.ToList();


                foreach (var gymPass in gymPasses)
                {
                    var temp = new Responses.GymPasses
                    {
                        Id                   = gymPass.Id.ToString() ?? "NULL",
                        UserId               = gymPass.UserId.ToString() ?? "NULL",
                        GymId                = gymPass.GymId.ToString() ?? "NULL",
                        LocalDateBought      = gymPass.LocalDateBought.ToString() ?? "NULL",
                        LocalDateExpired     = gymPass.LocalDateExpired.ToString() ?? "NULL",
                        CreditsUsed          = gymPass.CreditsUsed,
                        AmountCharged        = gymPass.AmountCharged,
                        ServerTimeDateBought = gymPass.ServerTimeDateBought.ToString() ?? "NULL",
                        GymPassCost          = gymPass.GymPassCost,
                    };

                    temp.GymPassProfit = (temp.GymPassCost + temp.CreditsUsed) - gymPass.GymPassCost;
                    rv.totalStatsGymPasses.GymPassCost   = rv.totalStatsGymPasses.GymPassCost + temp.GymPassCost;
                    rv.totalStatsGymPasses.GymPassProfit = rv.totalStatsGymPasses.GymPassProfit + temp.GymPassProfit;
                    rv.totalStatsGymPasses.CreditsUsed   = rv.totalStatsGymPasses.CreditsUsed + temp.CreditsUsed;
                    rv.totalStatsGymPasses.AmountCharged = rv.totalStatsGymPasses.AmountCharged + temp.AmountCharged;


                    if (gymPass.Gym != null || gymPass.Gym.Position != null)
                    {
                        temp.Position           = new Position();
                        temp.Position.Longitude = gymPass.Gym.Position.Longitude.ToString();
                        temp.Position.Latitude  = gymPass.Gym.Position.Latitude.ToString();
                        temp.GymName            = gymPass.Gym.GymName;
                    }

                    if (gymPass.User != null)
                    {
                        temp.UserName = gymPass.User.FirstName + " " + gymPass.User.LastName;
                    }

                    rv.gymPasses.Add(temp);
                }
            }

            rv.success = true;
            rv.message = "";
            return(rv);
        }
    }
Пример #27
0
        public static void LogsInsertError(Exception exception)
        {
            using (var db = new UniversalGymEntities())
            {
                Log log = new Log
                {
                    InsertDate = DateTime.UtcNow,
                    IsError    = true
                };

                log.LogMessage = "";
                if (exception.Message != null)
                {
                    log.LogMessage = log.LogMessage
                                     + "Error: "
                                     + exception.Message;
                }
                else if (exception.StackTrace != null)
                {
                    log.LogMessage = log.LogMessage
                                     + "| stacktrace : "
                                     + exception.StackTrace;
                }
                else if (exception.InnerException != null)
                {
                    log.LogMessage = log.LogMessage + "inner:";

                    if (exception.InnerException.Message != null)
                    {
                        log.LogMessage = log.LogMessage
                                         + " "
                                         + exception.Message;
                    }
                    else if (exception.InnerException.StackTrace != null)
                    {
                        log.LogMessage = log.LogMessage
                                         + " "
                                         + exception.StackTrace;
                    }
                }

                db.Logs.Add(log);

                db.SaveChanges();



                var lastLogs = db.Logs.OrderByDescending(o => o.LogId).Take(6).ToArray();
                var body     = "Exception: " + Environment.NewLine;
                foreach (Log lastLog in lastLogs)
                {
                    body = body
                           + "Id: "
                           + lastLog.LogId
                           + Environment.NewLine
                           + "Date: "
                           + lastLog.InsertDate
                           + Environment.NewLine
                           + "LogMessage: "
                           + lastLog.LogMessage
                           + Environment.NewLine
                           + Environment.NewLine;
                }

                SlackHelper.sendErrorChannel(body);

                /*EmailNoTemplateHelper.SendEmail(
                 *  "Exception Found",
                 *  "*****@*****.**",
                 *  body);*/
            }
        }
Пример #28
0
        public static GymDataResponse gymRegisterImplementation(RegisterGymRequest request)
        {
            if (String.IsNullOrWhiteSpace(request.gymName))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a gym name"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.gymPhone))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a gym phone number"
                });
            }

            else if (String.IsNullOrWhiteSpace(request.contactName))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a contact name"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.contactEmail))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter an email"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.contactPhone))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a phone number"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.website))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a website"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.address))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a street"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.city))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a city"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.state))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a state or province"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.zip))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a zip code"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.priceTier))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please select one given of the price tiers"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.password) || request.password.Length < 6)
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a password greater than 5 characters"
                });
            }
            else if (String.IsNullOrWhiteSpace(request.website))
            {
                return(new GymDataResponse {
                    success = false, status = 200, message = "Please enter a website"
                });
            }
            if (MembershipHelper.emailAlreadyExists(request.contactEmail, Constants.GymRole))
            {
                return(new GymDataResponse {
                    success = false, status = 10, message = "Email already taken."
                });
            }


            var newGymGuid = MembershipHelper.createMembership(request.contactEmail, request.password, Constants.GymRole);

            using (var db = new UniversalGymEntities())
            {
                var state = db.TypeStates.FirstOrDefault(f => f.StateAbbreviation.ToLower() == request.state.ToLower()) ??
                            db.TypeStates.First(f => f.StateAbbreviation == "00");

                var address = new Data.Address()
                {
                    StreetLine1 = request.address,
                    City        = request.city,
                    Zip         = request.zip,
                    TypeStateId = state.TypeStateId
                };
                db.Addresses.Add(address);
                var publicContactInfo = new Data.ContactInfo
                {
                    AddressId = address.AddressId,
                    Phone     = request.gymPhone,
                };
                db.ContactInfoes.Add(publicContactInfo);
                db.SaveChanges();
                var ownerContactInfo = new Data.ContactInfo
                {
                    Email = request.contactEmail,
                    Phone = request.contactPhone,
                };
                db.ContactInfoes.Add(ownerContactInfo);
                db.SaveChanges();

                var gym = new Data.Gym
                {
                    CreditDollarValue = Constants.returnGymPay(request.priceTier),
                    PriceToCharge     = Constants.returnGymPrice(request.priceTier),
                    GymName           = request.gymName,
                    IsApproved        = false,
                    OwnerName         = request.contactName,
                    Url = request.website.Contains("://") ? request.website : "http://" + request.website,
                    PublicContactInfoId = publicContactInfo.ContactInfoId,
                    OwnerContactInfoId  = ownerContactInfo.ContactInfoId,
                    GymInfo             = "",
                    GymGuid             = newGymGuid,
                    ApplicationDate     = DateTime.UtcNow,
                    IsActive            = true,
                };


                db.Gyms.Add(gym);
                var target   = request.address + " " + request.state + " " + request.zip;
                var geocoded = Geocoder.GeoCodeAddress(target);
                if (geocoded != null)
                {
                    gym.Position = System.Data.Entity.Spatial.DbGeography.FromText(geocoded.GetPointString());
                    db.SaveChanges();

                    var newgymBody = "Gym Registration"
                                     + Environment.NewLine
                                     + "Gym Name: "
                                     + gym.GymName
                                     + Environment.NewLine
                                     + "Location: "
                                     + request.address
                                     + Environment.NewLine
                                     + "City: "
                                     + request.city
                                     + Environment.NewLine
                                     + "State: "
                                     + request.state
                                     + Environment.NewLine
                                     + "Zip Code: "
                                     + request.zip
                                     + Environment.NewLine
                                     + "Gym Phone"
                                     + request.gymPhone
                                     + Environment.NewLine
                                     + "Contact Name: "
                                     + request.contactName
                                     + Environment.NewLine
                                     + "Contact Email: "
                                     + request.contactEmail
                                     + Environment.NewLine
                                     + "Contact Phone: "
                                     + request.contactPhone
                                     + Environment.NewLine
                                     + "Website: "
                                     + gym.Url
                                     + Environment.NewLine;

                    SlackHelper.sendGymSignupChannel(newgymBody, geocoded.Latitude.ToString(), geocoded.Longitude.ToString());
                    // add gym id
                    var gymId = gym.GymId;
                    var link  = Constants.PedalWebUrl + "gym.html#/login";

                    EmailTemplateHelper.SendEmail("Welcome to Pedal!", request.contactEmail, link, request.gymName, "gym_signup.html");
                }
                else
                {
                    db.ContactInfoes.Remove(gym.ContactInfo);
                    db.ContactInfoes.Remove(gym.ContactInfo1);

                    var supportText = "Gym Registration - Location not found!"
                                      + Environment.NewLine
                                      + "Gym Name: "
                                      + gym.GymName
                                      + Environment.NewLine
                                      + "Location: "
                                      + request.address
                                      + Environment.NewLine
                                      + "City: "
                                      + request.city
                                      + Environment.NewLine
                                      + "State: "
                                      + request.state
                                      + Environment.NewLine
                                      + "Zip Code: "
                                      + request.zip
                                      + Environment.NewLine
                                      + "Gym Phone"
                                      + request.gymPhone
                                      + Environment.NewLine
                                      + "Contact Name: "
                                      + request.contactName
                                      + Environment.NewLine
                                      + "Contact Email: "
                                      + request.contactEmail
                                      + Environment.NewLine
                                      + "Contact Phone: "
                                      + request.contactPhone
                                      + Environment.NewLine
                                      + "Website: "
                                      + gym.Url
                                      + Environment.NewLine;

                    SlackHelper.sendSupportChannel(supportText);

                    EmailNoTemplateHelper.SendEmail("Gym Registration Problem", "*****@*****.**", supportText);

                    return(new GymDataResponse {
                        success = false, status = 200, message = "Location could not be found. The Pedal team has been notified to look into this."
                    });
                }


                return(gymDataHelper.CreateGymDataResponse(gym.GymId, true));
            }
        }
Пример #29
0
        public static getAllUsersResponse getAllUsersImplementation(BaseRequest request)
        {
            if (request.authToken != Constants.MarketingToken)
            {
                return new getAllUsersResponse()
                       {
                           success = false, status = 404, message = "Wrong Token"
                       }
            }
            ;

            var rv = new getAllUsersResponse();

            rv.totalStatsUsers = new totalStatsUsers();
            rv.totalStatsUsers.GymPassCount = 0;
            rv.totalStatsUsers.Credits      = 0;
            rv.totalStatsUsers.TotalRevenue = 0;
            rv.totalStatsUsers.TotalCosts   = 0;
            rv.totalStatsUsers.TotalProfit  = 0;

            rv.users = new List <Responses.Users>();
            using (var db = new UniversalGymEntities())
            {
                var users = db.Users.ToList();

                foreach (var user in users)
                {
                    var temp = new Responses.Users
                    {
                        UserId                = user.UserId.ToString() ?? "NULL",
                        UserGuid              = user.UserGuid.ToString() ?? "NULL",
                        hasCreditCard         = user.hasCreditCard.ToString() ?? "NULL",
                        FirstName             = user.FirstName ?? "NULL",
                        LastName              = user.LastName ?? "NULL",
                        Email                 = user.Email ?? "NULL",
                        hasActiveSubscription = user.hasActiveSubscription.ToString() ?? "NULL",
                        StripeUrl             = user.StripeUrl ?? "NULL",
                        CurrentToken          = user.CurrentToken ?? "NULL",
                        Credits               = user.Credits,
                        joinDate              = user.joinDate.ToString() ?? "NULL",
                        ReferalUrl            = user.ReferalUrl ?? "NULL",
                    };

                    rv.totalStatsUsers.Credits = rv.totalStatsUsers.Credits + temp.Credits;


                    temp.GymPassCount = user.GymPasses.Count;
                    rv.totalStatsUsers.GymPassCount = rv.totalStatsUsers.GymPassCount + temp.GymPassCount;

                    if (user.GymPasses.Count > 0)
                    {
                        var totalRevenue =
                            from gp in user.GymPasses
                            group gp by 1 into g
                            select new
                        {
                            totalCredit  = g.Sum(x => x.CreditsUsed),
                            totalCharged = g.Sum(x => x.AmountCharged),
                            totalCost    = g.Sum(x => x.GymPassCost)
                        };

                        temp.TotalRevenue = totalRevenue.SingleOrDefault().totalCredit + totalRevenue.SingleOrDefault().totalCharged;
                        temp.TotalCosts   = totalRevenue.SingleOrDefault().totalCost;
                        temp.TotalProfit  =
                            (totalRevenue.SingleOrDefault().totalCredit + totalRevenue.SingleOrDefault().totalCharged)
                            - totalRevenue.SingleOrDefault().totalCost;

                        rv.totalStatsUsers.TotalRevenue = rv.totalStatsUsers.TotalRevenue + temp.TotalRevenue;
                        rv.totalStatsUsers.TotalCosts   = rv.totalStatsUsers.TotalCosts + temp.TotalCosts;
                        rv.totalStatsUsers.TotalProfit  = rv.totalStatsUsers.TotalProfit + temp.TotalProfit;
                    }
                }
            }

            rv.success = true;
            rv.message = "";
            return(rv);
        }
    }