public HttpResponseMessage Enrol(string code)
        {
            ServerUtils.LogTelemetryEvent(User.Identity.Name, "Enrol");

            ServiceData.Models.Study found = _studyRepository.Search(
                st => st.Code == code
                ).FirstOrDefault();

            ServiceData.Models.User thisUser = _userRepository.Search(
                usr => usr.Email == User.Identity.Name
                ).FirstOrDefault();

            if (found != null && thisUser != null &&
                !found.StudyEnrolments.Any(en => en.UserId == thisUser.Id))
            {
                Models.StudyEnrolment enrol = new Models.StudyEnrolment
                {
                    CreatedAt = DateTime.UtcNow,
                    StudyId   = found.Id,
                    Enrolled  = true,
                    UserId    = thisUser.Id
                };

                var serviceMod = Models.StudyEnrolment.ToServiceModel(enrol, true, true);
                var finalRes   = _studyEnrolmentRepository.Insert(serviceMod);
                return(Request.CreateResponse(HttpStatusCode.OK, finalRes));
            }

            return(Request.CreateResponse(HttpStatusCode.NotFound));
        }
        // POST api/values
        public HttpResponseMessage Post([FromBody] Models.UserCondition newCondition)
        {
            try
            {
                newCondition.Owner = Models.User.ToAppModel(_userRepository.Search(u => u.Email == User.Identity.Name).FirstOrDefault());

                ServiceData.Models.UserCondition returned = _conditionRepository.Insert(Models.UserCondition.ToServiceModel(newCondition, true));

                ServerUtils.LogTelemetryEvent(User.Identity.Name, "AddCondition");
                PostLog("UserConditions_Create", newCondition.Owner.Id);
                return(Request.CreateResponse(HttpStatusCode.OK, Models.UserCondition.ToAppModel(returned, false)));
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, e));
            }
        }
        public async Task <HttpResponseMessage> Post([FromBody] Models.Photo newPhoto)
        {
            try
            {
                ServiceData.Models.Photo returned = _photoRepository.Insert(Models.Photo.ToServiceModel(newPhoto, true));
                UpdateShares(returned);

                ServerUtils.LogTelemetryEvent(User.Identity.Name, "AddPhoto");

                PostLog("Photos_Create");

                return(Request.CreateResponse(HttpStatusCode.OK, Models.Photo.ToAppModel(returned, false)));
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, e));
            }
        }
Exemple #4
0
        public async Task <HttpResponseMessage> Post([FromBody] Models.Share newShare)
        {
            try
            {
                // Does this share already exist? Change the existing share rather than making a new one
                ServiceData.Models.Share found = _shareRepository.Search(sh =>
                                                                         sh.UserCondition.Id == newShare.UserCondition.Id &&
                                                                         sh.SharedEmail == newShare.SharedEmail).FirstOrDefault();

                Models.Share toRet = null;

                if (found != null)
                {
                    found.ExpireDate = newShare.ExpireDate;
                    _shareRepository.Update(found);
                    toRet = Models.Share.ToAppModel(found, false);
                }
                else
                {
                    newShare.CreatedAt = DateTime.Now;
                    newShare.Updated   = true;
                    ServiceData.Models.Share returned = _shareRepository.Insert(Models.Share.ToServiceModel(newShare, true));
                    toRet = Models.Share.ToAppModel(returned, false);

                    await ServerUtils.SendEmail(
                        toRet.SharedEmail,
                        "",
                        "New MySkinSelfie share from " + newShare.UserCondition.Owner.Name,
                        string.Format("{0} has shared their album '{1}' with you." +
                                      " Create or log into an account with this email address at {2} to see it!",
                                      newShare.UserCondition.Owner.Name,
                                      newShare.UserCondition.Condition,
                                      string.Format("{0}Conditions/Index/{1}", ConfidentialData.SiteUrl, toRet.UserCondition.Id)));
                }

                ServerUtils.LogTelemetryEvent(User.Identity.Name, "AddShare");
                return(Request.CreateResponse(HttpStatusCode.OK, toRet));
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, e));
            }
        }
        private void PostLog(string eventType, int?userId = null)
        {
            if (userId == null)
            {
                var user = _userRepository.Search(u => u.Email == User.Identity.Name).FirstOrDefault();
                if (user == null)
                {
                    return;
                }
                userId = user.Id;
            }

            _logRepository.Insert(new ServiceData.Models.EventLog
            {
                Action    = eventType,
                CreatedAt = DateTime.Now,
                UserId    = (int)userId
            });
        }
        //[AllowAnonymous]
        //public HttpResponseMessage Get()
        //{
        //    List<ServiceData.Models.User> found = _userRepository.GetAll().ToList();
        //    List<UserStat> toRet = new List<UserStat>();

        //    Regex initials = new Regex(@"(\b[a-zA-Z])[a-zA-Z]* ?");

        //    foreach (ServiceData.Models.User u in found)
        //    {
        //        if (u.BirthDate == null || (DateTime.UtcNow - u.BirthDate).TotalDays < 2)
        //        {
        //            u.BirthDate = DateTime.UtcNow.AddYears(-30);
        //        }

        //        UserStat thisStat = new UserStat
        //        {
        //            Initials = initials.Replace(u.Name, "$1"),
        //            DoB = u.BirthDate.ToString("yyyy-MM-dd"),
        //            NumAlbums = 0,
        //            NumPhotos = 0
        //        };

        //        foreach(ServiceData.Models.UserCondition c in u.Conditions)
        //        {
        //            thisStat.NumAlbums++;
        //            thisStat.NumPhotos += c.Photos.Count();
        //        }

        //        toRet.Add(thisStat);
        //    }

        //    return Request.CreateResponse(HttpStatusCode.OK, toRet);
        //}

        // POST api/values
        public HttpResponseMessage Post([FromBody] Models.User newUser)
        {
            try
            {
                newUser.Email = User.Identity.Name; // Name = email

                if (newUser.BirthDate == null || (DateTime.UtcNow - newUser.BirthDate).TotalDays < 2)
                {
                    newUser.BirthDate = DateTime.UtcNow.AddYears(-30);
                }

                Models.User returned = Models.User.ToAppModel(_userRepository.Insert(Models.User.ToServiceModel(newUser)));

                ServerUtils.LogTelemetryEvent(User.Identity.Name, "CreateUser");
                PostLog("Users_Create", returned.Id);

                return(Request.CreateResponse(HttpStatusCode.OK, returned));
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, e));
            }
        }
Exemple #7
0
 public void Post([FromBody] Production value)
 {
     _productionRepository.Insert(value);
 }