예제 #1
0
        public ActionResult Edit(string id)
        {
            ViewBag.ReturnUrl = Request.UrlReferrer == null ? "/Challenge" : Request.UrlReferrer.AbsoluteUri;
            ViewBag.Groups    = RepositoryProvider.Get <GroupRepository>().Get().ToList();
            if (string.IsNullOrEmpty(id))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var challenge = RepositoryProvider.Get <ChallengeRepository>().GetById(Guid.Parse(id));

            if (challenge == null)
            {
                return(HttpNotFound());
            }
            var editChallenge = new EditChallengeBindingModel()
            {
                ChallengeId = challenge.ChallengeId,
                Name        = challenge.Name,
                Count       = challenge.Count,
                Description = challenge.Description,
                DueDate     = challenge.DueDate.ToLocalTime(),
                //FrequencyValue = challenge.FrequencyValue,
                //FrequencyCount = challenge.FrequencyCount,
                PictureUrl = challenge.Picture,
                GroupIds   = challenge.Groups.Any() ? challenge.Groups.Select(p => p.GroupId.ToString()).ToArray() : null
            };

            Enums.ChallengeStatus challengeStatus;
            editChallenge.Status = Enum.TryParse(challenge.Status, out challengeStatus)
                ? challengeStatus
                : Enums.ChallengeStatus.Draft;

            Enums.ChallengeType challengeType;
            editChallenge.Type = Enum.TryParse(challenge.Type, out challengeType)
                ? challengeType
                : Enums.ChallengeType.Group;

            //Enums.FrequencyType frequencyType;
            //editChallenge.FrequencyType = Enum.TryParse(challenge.FrequencyType, out frequencyType)
            //    ? frequencyType
            //    : Enums.FrequencyType.ByDay;

            return(View(editChallenge));
        }
예제 #2
0
        public async Task <ActionResult> Create(
            [Bind(Include = "Name,Type,Count,Description,DueDate,Status,GroupIds,Picture")] EditChallengeBindingModel
            model)
        {
            //FrequencyValue,FrequencyCount,FrequencyType,
            if (ModelState.IsValid)
            {
                //var challenge =
                //    RepositoryProvider.Get<ChallengeRepository>()
                //        .FirstOrDefault(p => p.Name.ToUpper() == model.Name.ToUpper());
                //if (challenge != null)
                //{
                //    ModelState.AddModelError("", "Challenge has been used.");
                //    ViewBag.ReturnUrl = string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                //            ? "/Challenge"
                //            : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]);
                //}
                //else
                {
                    var challenge = new Challenge()
                    {
                        ChallengeId    = Guid.NewGuid(),
                        Name           = model.Name,
                        Count          = model.Count,
                        Description    = model.Description,
                        DueDate        = model.DueDate.AddDays(1).AddSeconds(-1).ToUniversalTime(),
                        FrequencyValue = 0, //model.FrequencyValue,
                        FrequencyCount = 0, //model.FrequencyCount,
                        CreateDate     = DateTime.UtcNow,
                        CreatorId      = CurrentAccess.UserId,
                        Type           = model.Type.ToString(),
                        Status         = model.Status.ToString(),
                        FrequencyType  = Enums.FrequencyType.ByDay.ToString(), // model.FrequencyType.ToString(),
                        Order          = RepositoryProvider.Get <ChallengeRepository>().GetNextOrder()
                    };
                    if (model.GroupIds != null && model.GroupIds.Length > 0)
                    {
                        foreach (var gId in model.GroupIds)
                        {
                            Guid id    = Guid.Parse(gId);
                            var  group = RepositoryProvider.Get <GroupRepository>()
                                         .FirstOrDefault(p => p.GroupId == id);
                            if (group != null)
                            {
                                challenge.Groups.Add(group);
                            }
                        }
                    }
                    if (model.Picture != null && model.Picture.ContentLength > 0)
                    {
                        var stream = new MemoryStream();
                        ImageHelper.Resize(model.Picture.InputStream, stream, 300, ImageFormat.Jpeg);
                        var azureStorageHelper = new AzureStorageHelper(ConfigHelper.AzureStorageConnectionString);
                        var newPicture         = await azureStorageHelper.SaveFileStream(stream, Guid.NewGuid() + ".jpg",
                                                                                         AzureStorageHelper.FileUsage.UserPhotos);

                        challenge.Picture = newPicture;
                    }

                    RepositoryProvider.Get <ChallengeRepository>().Insert(challenge);
                    RepositoryProvider.Save();
                    return
                        (Redirect(string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                            ? "/Challenge"
                            : HttpUtility.UrlDecode(Request.QueryString["returnUrl"])));
                }
            }
            ViewBag.ReturnUrl = Request.QueryString["returnUrl"];
            ViewBag.Groups    = RepositoryProvider.Get <GroupRepository>().Get().ToList();
            return(View(model));
        }