Esempio n. 1
0
        public async Task <IHttpActionResult> ChangePhoto(ChangePhotoBindingModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await RepositoryProvider.UserStore.FindByIdAsync(CurrentAccess.UserId);

                var oldPhotoPath = user.PhotoPath;

                Stream s = new MemoryStream(model.Photo.Buffer);
                ImageHelper.Resize(s, s, 300, ImageFormat.Jpeg);
                var azureStorageHelper = new AzureStorageHelper(ConfigHelper.AzureStorageConnectionString);
                var newPhotoPath       = await azureStorageHelper.SaveFileStream(s, Guid.NewGuid() + ".jpg",
                                                                                 AzureStorageHelper.FileUsage.UserPhotos);

                user.PhotoPath = newPhotoPath;
                await UserManager.UpdateAsync(user);

                if (!string.IsNullOrEmpty(oldPhotoPath))
                {
                    await azureStorageHelper.DeleteFile(oldPhotoPath, AzureStorageHelper.FileUsage.UserPhotos);
                }

                return(Ok(new { photoPath = newPhotoPath }));
            }

            return(BadRequest());
        }
Esempio n. 2
0
        public async Task <ActionResult> Edit(
            [Bind(Include = "GroupId,Name,Description,Code,Picture,PictureUrl")] EditGroupBindingModel model)
        {
            if (ModelState.IsValid)
            {
                var group =
                    RepositoryProvider.Get <GroupRepository>()
                    .FirstOrDefault(
                        p => p.Name.ToUpper() == model.Name.ToUpper() || p.Code.ToUpper() == model.Code.ToUpper());
                if (group != null && group.GroupId != model.GroupId)
                {
                    ModelState.AddModelError("", "Name or Code has been used.");
                    ViewBag.ReturnUrl = string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                        ? "/Code"
                        : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]);
                }
                else
                {
                    group             = RepositoryProvider.Get <GroupRepository>().GetById(model.GroupId.GetValueOrDefault());
                    group.Name        = model.Name;
                    group.Description = model.Description;
                    group.Code        = model.Code;

                    var azureStorageHelper = new AzureStorageHelper(ConfigHelper.AzureStorageConnectionString);
                    if (model.Picture != null && model.Picture.ContentLength > 0)
                    {
                        var stream = new MemoryStream();
                        ImageHelper.Resize(model.Picture.InputStream, stream, 300, ImageFormat.Jpeg);

                        var newPicture = await azureStorageHelper.SaveFileStream(stream, Guid.NewGuid() + ".jpg",
                                                                                 AzureStorageHelper.FileUsage.UserPhotos);

                        group.Picture = newPicture;
                    }

                    RepositoryProvider.Get <GroupRepository>().Update(group);
                    RepositoryProvider.Save();
                    if (!string.IsNullOrEmpty(model.PictureUrl))
                    {
                        await azureStorageHelper.DeleteFile(model.PictureUrl, AzureStorageHelper.FileUsage.UserPhotos);
                    }
                    return
                        (Redirect(string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                            ? "/Code"
                            : HttpUtility.UrlDecode(Request.QueryString["returnUrl"])));
                }
            }
            return(View(model));
        }
Esempio n. 3
0
        // GET: User/Delete/5
        public async Task <ActionResult> Delete(string id)
        {
            var user      = UserManager.FindById(id);
            var isSuccess = RepositoryProvider.Get <SPRepository>().DeleteUserById(id);

            if (isSuccess)
            {
                var azureStorageHelper = new AzureStorageHelper(ConfigHelper.AzureStorageConnectionString);
                if (!string.IsNullOrEmpty(user.PhotoPath))
                {
                    await azureStorageHelper.DeleteFile(user.PhotoPath, AzureStorageHelper.FileUsage.UserPhotos);
                }
            }
            return(Redirect(Request.UrlReferrer == null ? "/User" : Request.UrlReferrer.AbsoluteUri));
        }
Esempio n. 4
0
        public async Task <ActionResult> Edit(
            [Bind(Include = "UserId,FirstName,LastName,PhotoPath,Photo,Status,UserName,RoleName,GroupIds")] EditUserMvcViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = UserManager.FindById(model.UserId);
                if (model.Photo != null && model.Photo.InputStream.Length > 0)
                {
                    var    azureStorageHelper = new AzureStorageHelper(ConfigHelper.AzureStorageConnectionString);
                    Stream s = model.Photo.InputStream;
                    ImageHelper.Resize(s, s, 300, ImageFormat.Jpeg);
                    var photoUrl =
                        await
                        azureStorageHelper.SaveFileStream(s, Guid.NewGuid() + ".jpg",
                                                          AzureStorageHelper.FileUsage.UserPhotos);

                    if (!string.IsNullOrEmpty(user.PhotoPath))
                    {
                        await azureStorageHelper.DeleteFile(user.PhotoPath, AzureStorageHelper.FileUsage.UserPhotos);
                    }
                    user.PhotoPath = photoUrl;
                }
                user.FirstName = model.FirstName;
                user.LastName  = model.LastName;
                user.Status    = model.Status.ToString();
                user.Roles.Clear();
                var role = RoleManager.FindByName(model.RoleName.ToString());
                user.Roles.Add(new IdentityUserRole()
                {
                    UserId = user.Id,
                    RoleId = role.Id
                });
                if (model.GroupIds != null && model.GroupIds.Length > 0)
                {
                    user.JoinedGroups.Clear();
                    foreach (var gId in model.GroupIds)
                    {
                        Guid id    = Guid.Parse(gId);
                        var  group = RepositoryProvider.Get <GroupRepository>()
                                     .FirstOrDefault(p => p.GroupId == id);
                        if (group != null)
                        {
                            user.JoinedGroups.Add(group);
                        }
                    }
                }
                IdentityResult result = await UserManager.UpdateAsync(user);

                if (!result.Succeeded)
                {
                    AddErrors(result);
                    ViewBag.ReturnUrl = string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                        ? "/User"
                        : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]);
                }
                else
                {
                    return
                        (Redirect(string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                            ? "/User"
                            : HttpUtility.UrlDecode(Request.QueryString["returnUrl"])));
                }
            }
            ViewBag.ReturnUrl = Request.QueryString["returnUrl"];
            ViewBag.Groups    = RepositoryProvider.Get <GroupRepository>().Get().ToList();
            return(View(model));
        }
Esempio n. 5
0
        public async Task <ActionResult> Create(
            [Bind(Include = "FirstName,LastName,Photo,UserName,Password,ConfirmPassword,RoleName,GroupIds,Status")] RegisterUserMvcViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = UserManager.FindByName(model.UserName);
                if (user != null)
                {
                    ModelState.AddModelError("", "User Name has been userd.");
                    ViewBag.ReturnUrl = string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                        ? "/User"
                        : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]);
                }
                else
                {
                    var azureStorageHelper = new AzureStorageHelper(ConfigHelper.AzureStorageConnectionString);

                    Stream s = model.Photo.InputStream;
                    ImageHelper.Resize(s, s, 300, ImageFormat.Jpeg);
                    var photoUrl =
                        await
                        azureStorageHelper.SaveFileStream(s, Guid.NewGuid() + ".jpg",
                                                          AzureStorageHelper.FileUsage.UserPhotos);

                    user = new ApplicationUser
                    {
                        UserName      = model.UserName,
                        Email         = model.UserName,
                        FirstName     = model.FirstName,
                        LastName      = model.LastName,
                        PhotoPath     = photoUrl,
                        CreateDate    = DateTime.UtcNow,
                        LastLoginDate = DateTime.UtcNow,
                        Status        = model.Status.ToString()
                    };
                    var role = RoleManager.FindByName(model.RoleName.ToString());
                    user.Roles.Add(new IdentityUserRole()
                    {
                        UserId = user.Id,
                        RoleId = role.Id
                    });
                    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)
                            {
                                user.JoinedGroups.Add(group);
                            }
                        }
                    }
                    IdentityResult result = await UserManager.CreateAsync(user, model.Password);

                    if (!result.Succeeded)
                    {
                        await azureStorageHelper.DeleteFile(photoUrl, AzureStorageHelper.FileUsage.UserPhotos);

                        AddErrors(result);
                        ViewBag.ReturnUrl = string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                            ? "/User"
                            : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]);
                    }
                    else
                    {
                        return
                            (Redirect(string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                                ? "/User"
                                : HttpUtility.UrlDecode(Request.QueryString["returnUrl"])));
                    }
                }
            }
            ViewBag.ReturnUrl = Request.QueryString["returnUrl"];
            ViewBag.Groups    = RepositoryProvider.Get <GroupRepository>().Get().ToList();
            return(View(model));
        }
Esempio n. 6
0
        public async Task <ActionResult> Edit(
            [Bind(Include = "ChallengeId,Name,Type,Count,Description,DueDate,Status,GroupIds,PictureUrl,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 && challenge.ChallengeId != model.ChallengeId)
                //{
                //    ModelState.AddModelError("", "Challenge Name has been used.");
                //    ViewBag.ReturnUrl = string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                //            ? "/Challenge"
                //            : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]);
                //}
                //else
                {
                    var challenge = RepositoryProvider.Get <ChallengeRepository>().GetById(model.ChallengeId);
                    challenge.Name        = model.Name;
                    challenge.Count       = model.Count;
                    challenge.Description = model.Description;
                    challenge.DueDate     = model.DueDate.AddDays(1).AddSeconds(-1).ToUniversalTime();
                    //challenge.FrequencyValue = model.FrequencyValue;
                    //challenge.FrequencyCount = model.FrequencyCount;
                    challenge.Type   = model.Type.ToString();
                    challenge.Status = model.Status.ToString();
                    //challenge.FrequencyType = model.FrequencyType.ToString();

                    if (model.GroupIds != null && model.GroupIds.Length > 0)
                    {
                        challenge.Groups.Clear();
                        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);
                            }
                        }
                    }
                    var azureStorageHelper = new AzureStorageHelper(ConfigHelper.AzureStorageConnectionString);
                    if (model.Picture != null && model.Picture.ContentLength > 0)
                    {
                        var stream = new MemoryStream();
                        ImageHelper.Resize(model.Picture.InputStream, stream, 300, ImageFormat.Jpeg);

                        var newPicture = await azureStorageHelper.SaveFileStream(stream, Guid.NewGuid() + ".jpg",
                                                                                 AzureStorageHelper.FileUsage.UserPhotos);

                        challenge.Picture = newPicture;
                    }

                    RepositoryProvider.Get <ChallengeRepository>().Update(challenge);
                    RepositoryProvider.Save();
                    if (!string.IsNullOrEmpty(model.PictureUrl))
                    {
                        await azureStorageHelper.DeleteFile(model.PictureUrl, AzureStorageHelper.FileUsage.UserPhotos);
                    }
                    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));
        }