Пример #1
0
        private async Task AddDeed(Guid challengeId, DateTime deedTime, string location, double lat, double lon,
                                   string comment, int?rating,
                                   string recipient)
        {
            var deed = new Deed
            {
                CreatorId   = CurrentAccess.UserId,
                CreateDate  = DateTime.UtcNow,
                ChallengeId = challengeId,
                DeedId      = Guid.NewGuid(),
                DeedDate    = deedTime,
                Location    = location,
                Lat         = lat,
                Lon         = lon,
                Comment     = comment,
                Rating      = rating
            };


            if (!string.IsNullOrEmpty(recipient))
            {
                var recipientUser = await RepositoryProvider.UserStore.FindByIdAsync(recipient);

                if (recipientUser == null)
                {
                    return;
                }

                deed.TaggedUsers.Add(recipientUser);
            }
            RepositoryProvider.Get <DeedRepository>().Insert(deed);
        }
Пример #2
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl   = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    var emailTemplate = RepositoryProvider.Get <EmailTemplateRepository>().FirstOrDefault(p => p.Type == Enums.EmailType.ConfirmYourAccount.ToString());
                    if (emailTemplate != null)
                    {
                        emailTemplate.ReplaceWordsHolder(new KeyValuePair <string, string>("URL", callbackUrl));
                        await UserManager.SendEmailAsync(user.Id, emailTemplate.Title, emailTemplate.Content);
                    }
                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
    // Can I view entity with primary key X?
    public static bool CanI <TEntity>(Abilities ability, object entityKey)
        where TEntity : IStoredEntity
    {
        TEntity entity = RepositoryProvider.Get <TEntity>().Load(entityKey);

        return(CanI <TEntity>(ability, entity, AccountRoles.Admin));
    }
Пример #4
0
        public IHttpActionResult PostComment(Guid challengeId, CommentBindingModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var challenge = RepositoryProvider.Get <ChallengeRepository>().GetById(challengeId);
                    if (challenge == null)
                    {
                        return(NotFound());
                    }

                    var comment = new Comment();
                    comment.Caption     = model.Caption;
                    comment.CommentId   = Guid.NewGuid();
                    comment.CreateDate  = DateTime.Now;
                    comment.ReferenceId = challengeId.ToString();
                    comment.Type        = Comment.CommentType.ChallengeComment;
                    comment.UserId      = CurrentAccess.UserId;

                    RepositoryProvider.Get <CommentRepository>().Insert(comment);
                    RepositoryProvider.Save();

                    return(Ok());
                }
                catch (Exception exception)
                {
                    return(InternalServerError(exception));
                }
            }

            return(BadRequest(ModelState));
        }
Пример #5
0
        public IHttpActionResult GetChallenges()
        {
            var challenges = RepositoryProvider.Get <ChallengeRepository>().GetAvailableChallenges(CurrentAccess.UserId);
            var result     = challenges.Select(p => ChallengeViewModel.Create(p, CurrentAccess.UserId)).ToList();

            return(Ok(result));
        }
Пример #6
0
        public async Task <ActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindByNameAsync(model.Email);

                if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id)))
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    return(View("ForgotPasswordConfirmation"));
                }

                // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                // Send an email with this link
                string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);

                var callbackUrl   = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                var emailTemplate = RepositoryProvider.Get <EmailTemplateRepository>().FirstOrDefault(p => p.Type == Enums.EmailType.ResetPassword.ToString());
                if (emailTemplate != null)
                {
                    emailTemplate.ReplaceWordsHolder(new KeyValuePair <string, string>("URL", callbackUrl));
                    await UserManager.SendEmailAsync(user.Id, emailTemplate.Title, emailTemplate.Content);
                }
                return(RedirectToAction("ForgotPasswordConfirmation", "Account"));
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Пример #7
0
        public async Task <IHttpActionResult> Overview()
        {
            var myTotalDeedCount = await
                                   RepositoryProvider.Get <DeedRepository>().Get(p => p.CreatorId == CurrentAccess.UserId).CountAsync();

            var networkDeedCount = await
                                   RepositoryProvider.Get <DeedRepository>().Get(
                p => p.Challenge.Groups.Any(x => x.Members.Any(y => y.Id == CurrentAccess.UserId))).CountAsync();

            var totalDeedCount = await RepositoryProvider.Get <DeedRepository>().Get().CountAsync();

            var friendsCount = (await RepositoryProvider.UserStore.FindByIdAsync(CurrentAccess.UserId))
                               .JoinedGroups.SelectMany(p => p.Members).Count(p => p.Id != CurrentAccess.UserId);


            var result = new DeedOverViewModel
            {
                MyTotalDeedCount = myTotalDeedCount,
                NetworkDeedCount = networkDeedCount,
                TotalDeedCount   = totalDeedCount,
                FriendsCount     = friendsCount
            };

            return(Ok(result));
        }
Пример #8
0
        public ActionResult Index(string type   = "ALL", string id     = "ALL", int pageIndex = 0, int pageSize     = 0,
                                  string status = "All", string search = "", string orderBy   = "Order", bool isAsc = false, string code = "All")
        {
            int count = 0;

            pageIndex = pageIndex < 1 ? 1 : pageIndex;
            pageSize  = pageSize < 1 ? 20 : pageSize;
            Enums.ChallengeStatus challengeStatus;
            status = string.IsNullOrEmpty(status) || !Enum.TryParse(status, out challengeStatus)
                ? "All"
                : challengeStatus.ToString();
            code    = !string.IsNullOrEmpty(code) && code.ToUpper() != "ALL" ? code : "All";
            orderBy = (string.IsNullOrEmpty(orderBy) ||
                       _columns.All(p => !String.Equals(p, orderBy, StringComparison.CurrentCultureIgnoreCase)))
                ? "Order"
                : orderBy;
            ViewBag.Groups = RepositoryProvider.Get <GroupRepository>().Get().ToList();

            string subTitle = string.Empty;
            string preLink  = "/Challenge/?type=" + type.ToUpper() + "&id=" + id;
            IEnumerable <ChallengeView> challengeViews;
            string groupCode = string.Empty;

            if (type.ToUpper() == "CODE" && !string.IsNullOrEmpty(id))
            {
                var group = RepositoryProvider.Get <GroupRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Code'>Group Codes</a>&gt;<a href='/Code?type=SINGLE&id=" + group.GroupId + "'>" +
                           group.Code + "</a>&gt;Challenges";
                groupCode = group.Code;
            }
            else if (type.ToUpper() == "USER" && !string.IsNullOrEmpty(id))
            {
                var user = UserManager.FindById(id);
                subTitle = "<a href='/User'>Users</a>&gt;<a href='/User?type=SINGLE&id=" + user.Id + "'>" +
                           user.FirstName + " " + user.LastName + "</a>&gt;Challenges";
            }
            else if (type.ToUpper() == "SINGLE" && !string.IsNullOrEmpty(id))
            {
                var challenge = RepositoryProvider.Get <ChallengeRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Challenge'>Challenges</a>&gt;" + challenge.Name;
            }
            challengeViews = RepositoryProvider.Get <ViewRepository>()
                             .GetChallengeViews(ref count, pageIndex, pageSize, status, search, orderBy,
                                                string.IsNullOrEmpty(groupCode) ? code : groupCode, type.ToUpper(), id, isAsc);
            ViewBag.PreLink  = preLink;
            ViewBag.SubTitle = subTitle;
            ViewBag.Type     = type.ToUpper();

            ViewBag.PageIndex     = pageIndex;
            ViewBag.PageSize      = pageSize;
            ViewBag.ItemCount     = count;
            ViewBag.Status        = status;
            ViewBag.DisplayStatus = status.ToUpper() == "ALL" ? "All Statuses" : status;
            ViewBag.Code          = code;
            ViewBag.DisplayCode   = code.ToUpper() == "ALL" ? "All Group Codes" : code;
            ViewBag.Search        = search;
            ViewBag.OrderBy       = orderBy;
            ViewBag.IsAsc         = isAsc;
            return(View(challengeViews));
        }
Пример #9
0
        public void Test1()
        {
            RepositoryProvider repository = new RepositoryProvider();
            repository.Add(contentRepository);
            var item = repository.Get(contentRepository);
            Assert.AreEqual(contentRepository.Name, item.Name);
            Assert.AreEqual(contentRepository.DisplayName, item.DisplayName);

            repository.Remove(item);
        }
Пример #10
0
        public void Test1()
        {
            RepositoryProvider repository = new RepositoryProvider(new Common.BaseDir());

            repository.Add(contentRepository);
            var item = repository.Get(contentRepository);

            Assert.AreEqual(contentRepository.Name, item.Name);
            Assert.AreEqual(contentRepository.DisplayName, item.DisplayName);

            repository.Remove(item);
        }
Пример #11
0
        public static void Log(string request, string exception)
        {
            RepositoryProvider repositryProvider = RepositoryProvider.Create();

            repositryProvider.Get <ErrorMessageRepository>().Insert(new ErrorMessage()
            {
                ErrorMessageId = Guid.NewGuid(),
                EventDate      = DateTime.UtcNow,
                Request        = request,
                Exception      = exception
            });
            repositryProvider.Save();
        }
Пример #12
0
        public IHttpActionResult GetComments(Guid challengeId, int pageIndex = 0, int pageSize = 0)
        {
            var comments = RepositoryProvider.Get <CommentRepository>().GetComments(challengeId.ToString());

            if (pageSize > 0 && pageIndex >= 0)
            {
                comments = comments.Skip(pageSize * pageIndex).Take(pageSize);
            }

            var result = comments.Select(CommentViewModel.Create);

            return(Ok(result));
        }
Пример #13
0
        public async Task <IHttpActionResult> GetMyGroup()
        {
            var group =
                await
                RepositoryProvider.Get <GroupRepository>().FirstOrDefaultAsync(
                    p => p.Members.Any(g => g.Id == CurrentAccess.UserId));

            if (group == null)
            {
                return(NotFound());
            }

            return(Ok(GroupViewModel.Create(group)));
        }
Пример #14
0
        public async Task <ActionResult> Create(
            [Bind(Include = "Name,Description,Code,Picture")] 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)
                {
                    ModelState.AddModelError("", "Name or Code has been used.");
                    ViewBag.ReturnUrl = string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                        ? "/Code"
                        : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]);
                }
                else
                {
                    group = new Group()
                    {
                        GroupId     = Guid.NewGuid(),
                        Name        = model.Name,
                        Description = model.Description,
                        Code        = model.Code,
                        CreateDate  = DateTime.UtcNow,
                        CreatorId   = CurrentAccess.UserId
                    };

                    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);

                        group.Picture = newPicture;
                    }

                    RepositoryProvider.Get <GroupRepository>().Insert(group);
                    RepositoryProvider.Save();
                    return
                        (Redirect(string.IsNullOrEmpty(Request.QueryString["returnUrl"])
                            ? "/Code"
                            : HttpUtility.UrlDecode(Request.QueryString["returnUrl"])));
                }
            }
            return(View(model));
        }
Пример #15
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));
        }
Пример #16
0
        public ActionResult Index(string type   = "ALL", string id   = "ALL", int pageIndex     = 0, int pageSize = 0,
                                  string search = "", string orderBy = "CreateDate", bool isAsc = false)
        {
            int count = 0;

            pageIndex = pageIndex < 1 ? 1 : pageIndex;
            pageSize  = pageSize < 1 ? 20 : pageSize;
            orderBy   = (string.IsNullOrEmpty(orderBy) ||
                         _columns.All(p => !String.Equals(p, orderBy, StringComparison.CurrentCultureIgnoreCase)))
                ? "CreateDate"
                : orderBy;
            string subTitle = string.Empty;
            string preLink  = "/Code/?type=" + type.ToUpper() + "&id=" + id;
            IEnumerable <GroupView> codeViews;

            if (type.ToUpper() == "CHALLENGE" && !string.IsNullOrEmpty(id))
            {
                var challenge = RepositoryProvider.Get <ChallengeRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Challenge'>Challenges</a>&gt;<a href='/Challenge?type=SINGLE&id=" +
                           challenge.ChallengeId + "'>" + challenge.Name + "</a>&gt;Group Codes";
            }
            else if (type.ToUpper() == "USER" && !string.IsNullOrEmpty(id))
            {
                var user = UserManager.FindById(id);
                subTitle = "<a href='/User'>Users</a>&gt;<a href='/User?type=SINGLE&id=" + user.Id + "'>" +
                           user.FirstName + " " + user.LastName + "</a>&gt;Group Codes";
            }
            else if (type.ToUpper() == "SINGLE" && !string.IsNullOrEmpty(id))
            {
                var code = RepositoryProvider.Get <GroupRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Code'>Group Codes</a>&gt;" + code.Code;
            }
            codeViews = RepositoryProvider.Get <ViewRepository>()
                        .GetCodeViews(ref count, pageIndex, pageSize, search, orderBy, type.ToUpper(), id, isAsc);

            ViewBag.PreLink  = preLink;
            ViewBag.SubTitle = subTitle;
            ViewBag.Type     = type.ToUpper();

            ViewBag.PageIndex = pageIndex;
            ViewBag.PageSize  = pageSize;
            ViewBag.ItemCount = count;
            ViewBag.Search    = search;
            ViewBag.OrderBy   = orderBy;
            ViewBag.IsAsc     = isAsc;
            return(View(codeViews));
        }
Пример #17
0
        public async Task <IHttpActionResult> GetChallenge(Guid challengeId)
        {
            var challenge =
                await
                RepositoryProvider.Get <ChallengeRepository>().Get(p => p.ChallengeId == challengeId)
                .Include("Deeds")
                .FirstOrDefaultAsync();

            if (challenge == null)
            {
                return(NotFound());
            }

            var result = ChallengeViewModel.Create(challenge, CurrentAccess.UserId);

            return(Ok(result));
        }
Пример #18
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));
        }
Пример #19
0
        public async Task <IHttpActionResult> Join(string code)
        {
            try
            {
                await RepositoryProvider.Get <GroupRepository>().JoinGroup(CurrentAccess.UserId, code);

                await RepositoryProvider.SaveAsync();
            }
            catch (GroupRepository.GroupNotFoundException)
            {
                return(BadRequest("Group not found."));
            }
            catch (GroupRepository.AlreadyInGroupException)
            {
                return(BadRequest("Already joined this group."));
            }

            return(Ok());
        }
Пример #20
0
        // GET: User/Edit/5
        public ActionResult Edit(string id)
        {
            ViewBag.ReturnUrl = Request.UrlReferrer == null ? "/User" : Request.UrlReferrer.AbsoluteUri;
            ViewBag.Groups    = RepositoryProvider.Get <GroupRepository>().Get().ToList();
            if (string.IsNullOrEmpty(id))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var user = UserManager.FindById(id);

            if (user == null)
            {
                return(HttpNotFound());
            }
            var editUser = new EditUserMvcViewModel()
            {
                UserId    = user.Id,
                UserName  = user.UserName,
                FirstName = user.FirstName,
                LastName  = user.LastName,
                PhotoPath = user.PhotoPath,
            };

            Enums.UserStatus userStauts;
            editUser.Status = Enum.TryParse(user.Status, out userStauts) ? userStauts : Enums.UserStatus.Inactive;

            var identityUserRole = user.Roles.FirstOrDefault();

            if (identityUserRole != null)
            {
                var            role = RoleManager.FindById(identityUserRole.RoleId);
                Enums.RoleType roleType;
                editUser.RoleName = Enum.TryParse(role.Name, out roleType) ? roleType : Enums.RoleType.User;
            }
            editUser.GroupIds = user.JoinedGroups.Any()
                ? user.JoinedGroups.Select(p => p.GroupId.ToString()).ToArray()
                : null;
            return(View(editUser));
        }
    // Can I view entity (and if I have a specific role, I surely can)?
    public static bool CanI <TEntity>(Abilities ability, TEntity entity, params string[] authorizedRoles)
        where TEntity : IStoredEntity
    {
        var principal = Thread.CurrentPrincipal as MyCustomPrincipal;

        if (authorizedRoles.Any(r => principal.IsInRole(r)))
        {
            return(true);
        }
        var user = RepositoryProvider.Get <Account, AccountRepository>().GetUser(principal.AccountId);

        // my system has only two types of users
        if (user is Teacher)
        {
            return(Can <Teacher, TEntity>(user as Teacher, ability, entity));
        }
        else if (user is TrainingCenter)
        {
            return(Can <TrainingCenter, TEntity>(user as TrainingCenter, ability, entity));
        }
        return(false);
    }
Пример #22
0
        public async Task <IHttpActionResult> GetUsersInGroup(string q = "", int pageIndex = 0, int pageSize = 0)
        {
            var user = await RepositoryProvider.UserStore.FindByIdAsync(CurrentAccess.UserId);

            if (user == null)
            {
                return(NotFound());
            }
            var groupIds = user.JoinedGroups.Select(p => p.GroupId).ToList();

            var recentTaggedUsers = RepositoryProvider.Get <DeedRepository>()
                                    .Get(p => p.CreatorId == CurrentAccess.UserId && p.TaggedUsers.Any())
                                    .OrderByDescending(p => p.CreateDate)
                                    .SelectMany(p => p.TaggedUsers)
                                    .Distinct();

            var groupUser = RepositoryProvider.Get <GroupRepository>()
                            .Get(p => groupIds.Contains(p.GroupId))
                            .SelectMany(p => p.Members)
                            .OrderBy(p => p.FirstName);

            var result = recentTaggedUsers.Concat(groupUser)
                         .Distinct()
                         .Where(p => p.Id != CurrentAccess.UserId)
                         .Include(p => p.JoinedGroups);

            if (!string.IsNullOrEmpty(q))
            {
                result = SearchUser(result.AsQueryable(), q);
            }

            if (pageSize > 0)
            {
                result = result.AsEnumerable().Skip(pageIndex * pageSize).Take(pageSize).AsQueryable();
            }

            return(Ok(result.Select(UserDetailViewModel.Create)));
        }
    private void ChangeMarketState(Page page, string changeStateTo, string sendMailTo)
    {
        var     Id         = page.Request["MarketId"];
        var     repository = RepositoryProvider.Get();
        IEntity market     = repository.GetById(Id);

        if (market.state == changeStateTo)
        {
            if (changeStateTo == "Close")
            {
                throw new Exception("The market is already close!");
            }
            else
            {
                throw new Exception("The market is not open!");
            }
        }
        else
        {
            string currentMarketState = string.empty;
            string mailHeader         = string.empty;
            if (changeStateTo == "Close")
            {
                market.Close();
                currentMarketState = market.ToString() + " has been closed.";
                mailHeader         = "market closed";
            }
            else
            {
                market.Open();
                currentMarketState = market.ToString() + " was open.";
                mailHeader         = "market open";
            }
            repository.SaveChangesTo(market);
            Notifier.SendEmailNotification(mailHeader, currentMarketState, sendMailTo);
        }
    }
Пример #24
0
        public ActionResult Edit(string id)
        {
            ViewBag.ReturnUrl = Request.UrlReferrer == null ? "/Code" : Request.UrlReferrer.AbsoluteUri;
            if (string.IsNullOrEmpty(id))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var group = RepositoryProvider.Get <GroupRepository>().GetById(Guid.Parse(id));

            if (group == null)
            {
                return(HttpNotFound());
            }
            var editGroup = new EditGroupBindingModel()
            {
                GroupId     = group.GroupId,
                Name        = group.Name,
                Description = group.Description,
                Code        = group.Code,
                PictureUrl  = group.Picture
            };

            return(View(editGroup));
        }
    public bool CanView(Teacher user, Order entity)
    {
        var predicate = PredicateBuilder.Create <Order>(x => x.Id == entity.Id && x => x.Account.Id == user.Account.Id);

        return(RepositoryProvider.Get <Order>().Count(predicate) > 0);
    }
Пример #26
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));
        }
Пример #27
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));
        }
Пример #28
0
 public ActionResult Delete(Guid id)
 {
     RepositoryProvider.Get <DeedRepository>().Delete(id);
     RepositoryProvider.Save();
     return(Redirect(Request.UrlReferrer == null ? "/Deed" : Request.UrlReferrer.AbsoluteUri));
 }
Пример #29
0
        public ActionResult Index(string type = "ALL", string subType = "ALL", string id = "ALL", int pageIndex = 0, int pageSize = 0, string search = "", string orderBy = "CreateDate", string challengeId = "All", string userId = "All", bool isAsc = false)
        {
            int count = 0;

            pageIndex   = pageIndex < 1 ? 1 : pageIndex;
            pageSize    = pageSize < 1 ? 20 : pageSize;
            orderBy     = (string.IsNullOrEmpty(orderBy) || _columns.All(p => !String.Equals(p, orderBy, StringComparison.CurrentCultureIgnoreCase))) ? "CreateDate" : orderBy;
            challengeId = !string.IsNullOrEmpty(challengeId) && challengeId.ToUpper() != "ALL" ? challengeId : "All";
            userId      = !string.IsNullOrEmpty(userId) && userId.ToUpper() != "ALL" ? userId : "All";

            string subTitle = string.Empty;
            string preLink  = "/Deed/?type=" + type.ToUpper() + "&subType=" + subType.ToUpper() + "&id=" + id;
            IEnumerable <DeedView> deedViews;

            if (type.ToUpper() == "CHALLENGE" && !string.IsNullOrEmpty(id))
            {
                var challenge = RepositoryProvider.Get <ChallengeRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Challenge'>Challenges</a>&gt;<a href='/Challenge?type=SINGLE&id=" + challenge.ChallengeId + "'>" + challenge.Name + "</a>"
                           + "&gt;<a href='/Deed?type=CHALLENGE&id=" + challenge.ChallengeId + "'>Deeds</a>&gt;All";
            }
            else if (type.ToUpper() == "USER" && !string.IsNullOrEmpty(id))
            {
                var user = UserManager.FindById(id);
                subTitle = "<a href='/User'>Users</a>&gt;<a href='/User?type=SINGLE&id=" + user.Id + "'>" + user.FirstName + " " + user.LastName + "</a>"
                           + "&gt;<a href='/Deed?type=USER&id=" + user.Id + "'>Deeds</a>&gt;" + (subType.ToUpper() == "ALL"?"Personal":subType);
            }
            else if (type.ToUpper() == "SINGLE" && !string.IsNullOrEmpty(id))
            {
                var deed = RepositoryProvider.Get <DeedRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Challenge'>Challenges</a>&gt;" + deed.Challenge.Name;
            }
            deedViews = RepositoryProvider.Get <ViewRepository>().GetDeedViews(ref count, pageIndex, pageSize, search, orderBy, challengeId, userId, type, subType, id, isAsc);

            ViewBag.PreLink  = preLink;
            ViewBag.SubTitle = subTitle;
            ViewBag.Type     = type.ToUpper();

            ViewBag.PageIndex   = pageIndex;
            ViewBag.PageSize    = pageSize;
            ViewBag.ItemCount   = count;
            ViewBag.Search      = search;
            ViewBag.OrderBy     = orderBy;
            ViewBag.IsAsc       = isAsc;
            ViewBag.ChallengeId = challengeId;
            if (challengeId.ToUpper() == "ALL")
            {
                ViewBag.DisplayChallenge = "All Challenges";
            }
            else
            {
                var challenge = RepositoryProvider.Get <ChallengeRepository>().GetById(Guid.Parse(challengeId));
                ViewBag.DisplayChallenge = challenge.Name;
            }
            ViewBag.UserId = userId;
            if (userId.ToUpper() == "ALL")
            {
                ViewBag.DisplayUser = "******";
            }
            else
            {
                var user = UserManager.FindById(userId);
                ViewBag.DisplayUser = user.FirstName + " " + user.LastName;
            }
            ViewBag.Challenges = RepositoryProvider.Get <ChallengeRepository>().Get().ToList();
            ViewBag.Users      = UserManager.Users.ToList();
            return(View(deedViews));
        }
Пример #30
0
 public ActionResult Create()
 {
     ViewBag.ReturnUrl = Request.UrlReferrer == null ? "/User" : Request.UrlReferrer.AbsoluteUri;
     ViewBag.Groups    = RepositoryProvider.Get <GroupRepository>().Get().ToList();
     return(View());
 }
Пример #31
0
        public ActionResult Index(string type   = "ALL", string id     = "ALL", int pageIndex = 0, int pageSize = 0,
                                  string status = "All", string search = "", string orderBy   = "CreateDate", bool isAsc = false)
        {
            int    count    = 0;
            string subTitle = string.Empty;
            string preLink  = "/User/?type=" + type.ToUpper() + "&id=" + id;

            pageIndex = pageIndex < 1 ? 1 : pageIndex;
            pageSize  = pageSize < 1 ? 20 : pageSize;
            Enums.UserStatus userStatus;
            status = string.IsNullOrEmpty(status) || !Enum.TryParse(status, out userStatus)
                ? "All"
                : userStatus.ToString();
            orderBy = (string.IsNullOrEmpty(orderBy) ||
                       _columns.All(p => !String.Equals(p, orderBy, StringComparison.CurrentCultureIgnoreCase)))
                ? "CreateDate"
                : orderBy;
            IEnumerable <UserView> userViews;


            if (type.ToUpper() == "CODE" && !string.IsNullOrEmpty(id))
            {
                var group = RepositoryProvider.Get <GroupRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Code'>Group Codes</a>&gt;<a href='/Code?type=SINGLE&id=" + group.GroupId + "'>" +
                           group.Code + "</a>&gt;Members";
            }
            else if (type.ToUpper() == "DEED" && !string.IsNullOrEmpty(id))
            {
                var deed = RepositoryProvider.Get <DeedRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Deed'>Deeds</a>&gt;<a href='/Deed?type=SINGLE&id=" + deed.DeedId + "'>" +
                           deed.Challenge.Name + "</a>&gt;Recipients";
            }
            else if (type.ToUpper() == "CHALLENGE" && !string.IsNullOrEmpty(id))
            {
                var challenge = RepositoryProvider.Get <ChallengeRepository>().GetById(Guid.Parse(id));
                subTitle = "<a href='/Challenge'>Challenges</a>&gt;<a href='/Challenge?type=SINGLE&id=" +
                           challenge.ChallengeId + "'>" + challenge.Name + "</a>&gt;Users";
            }
            else if (type.ToUpper() == "USER" && !string.IsNullOrEmpty(id))
            {
                var user = UserManager.FindById(id);
                subTitle = "<a href='/User'>Users</a>&gt;<a href='/User?type=SINGLE&id=" + user.Id + "'>" +
                           user.FirstName + " " + user.LastName + "</a>&gt;Recipients";
            }
            else if (type.ToUpper() == "SINGLE" && !string.IsNullOrEmpty(id))
            {
                var user = UserManager.FindById(id);
                subTitle = "<a href='/User'>Users</a>&gt;" + user.FirstName + " " + user.LastName;
            }
            userViews = RepositoryProvider.Get <ViewRepository>()
                        .GetUserViews(ref count, pageIndex, pageSize, status, search, orderBy, type.ToUpper(), id, isAsc);
            ViewBag.PreLink   = preLink;
            ViewBag.SubTitle  = subTitle;
            ViewBag.PageIndex = pageIndex;
            ViewBag.PageSize  = pageSize;
            ViewBag.ItemCount = count;
            ViewBag.Status    = status;
            ViewBag.Search    = search;
            ViewBag.OrderBy   = orderBy;
            ViewBag.IsAsc     = isAsc;
            return(View(userViews));
        }