Пример #1
0
        public ActionResult GenerateOtp(ReviewerType reviewerType)
        {
            var careManager = CurrentUser.CareManager.FirstOrDefault();

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

            // Clears expired OTPs.
            var now          = DateTime.UtcNow;
            var otpsToRemove = careManager.Otps.Where(otp => otp.Expires < now).ToList();

            if (otpsToRemove.Count > 0)
            {
                db.Otps.RemoveRange(otpsToRemove);
                db.SaveChanges();
            }

            // Generates
            Otp newOtp = null;
            var random = new Random();

            for (var n = 0; n < 10; n++)
            {
                using (var db = new ApplicationDbContext())
                {
                    newOtp = new Otp()
                    {
                        CareManagerId    = careManager.CareManagerId,
                        VerificationCode = string.Format("{0:0000}", random.Next(10000)),
                        Expires          = DateTime.UtcNow.AddMonths(1),
                        ReviewerType     = reviewerType
                    };
                    db.Otps.Add(newOtp);
                    try
                    {
                        db.SaveChanges();
                        Log(LogType.CareManager, "OTPを生成しました。", new { newOtp.CareManagerId, newOtp.ReviewerType, newOtp.VerificationCode });
                        return(Json(new { otp = newOtp }));
                    }
                    catch (DbUpdateException)
                    {
                        // Continues to try another random code.
                    }
                }
            }

            // Failed to generate.
            return(Json(new { otp = (Otp)null }));
        }
Пример #2
0
        /// <summary>
        /// Adds a review to CareManager
        /// </summary>
        /// <param name="careManagerId"></param>
        /// <param name="reviewerType"></param>
        /// <param name="rating"></param>
        /// <param name="comment"></param>
        /// <param name="reply"></param>
        protected void AddReview(int careManagerId, ReviewerType reviewerType, int rating, string comment, string reply = null)
        {
            var review = new Review()
            {
                // Layer 4
                IpAddress = Request.UserHostAddress,
                Host      = Request.UserHostName,

                // Application Layer
                PartitionKey = careManagerId.ToString(),
                ReviewerType = reviewerType,
                Rating       = rating,
                Comment      = comment,
                Reply        = reply
            };

            TableHelper <Review> .Table.Insert(review);
        }