Esempio n. 1
0
        public Task <IdentityResult> CreateAsync(ApplicationUser user, string password, string initialRole)
        {
            try
            {
                //////////////////////////////question/////////////
                Assignment4Context context = (Assignment4Context)_store.Context;
                var newUser = context.Users.Create();
                newUser.Email        = user.Email;
                newUser.UserName     = user.Email;
                newUser.PasswordHash = PasswordHasher.HashPassword(password);
                // newUser.PhoneNumber = user.PhoneNumber;

                var role = context.Roles.Where(r => r.Name == initialRole).First();
                newUser.Roles.Add(new IdentityUserRole {
                    RoleId = role.Id, UserId = newUser.Id
                });
                context.Users.Add(newUser);



                context.SaveChanges();
                return(Task.FromResult(IdentityResult.Success));
            }
            catch (Exception)
            {
                return(Task.FromResult(IdentityResult.Failed("DB Error")));
            }
        }
Esempio n. 2
0
        // GET api/<controller>/5
        public EditableProduct Get(int id)
        {
            var userId = ((ClaimsPrincipal)this.User).FindFirst(ClaimTypes.NameIdentifier).Value;

            if (HttpContext.Current.Cache["Product" + id] != null)
            {
                return((EditableProduct)HttpContext.Current.Cache["Product" + id]);
            }
            using (Assignment4Context context = new Assignment4Context())
            {
                Product product  = context.Products.Find(id);
                var     eProduct = new EditableProduct {
                    IsJoinable = false, IsEditable = false, Version = product.Timestamp, Id = product.Id, AddedDate = product.AddedDate, ApplicationUserId = product.ApplicationUserId, Payable = product.Payable, Description = product.Description, Name = product.Name
                };
                HttpContext.Current.Cache["Product" + id] = eProduct;
                if (User.IsInRole("Admin") || (product.ApplicationUserId == userId))
                {
                    eProduct.IsEditable = true;
                    eProduct.IsJoinable = true;
                }
                if (User.IsInRole("Seeker") || (product.ApplicationUserId == userId))
                {
                    eProduct.IsEditable = false;
                    eProduct.IsJoinable = true;
                }
                if (User.IsInRole("Leader") || (product.ApplicationUserId == userId))
                {
                    eProduct.IsEditable = true;
                    eProduct.IsJoinable = false;
                }
                return(eProduct);
            }
        }
Esempio n. 3
0
 // POST api/<controller>
 public HttpResponseMessage Post([FromBody] Product pProduct)
 {
     try
     {
         var userId = ((ClaimsPrincipal)this.User).FindFirst(ClaimTypes.NameIdentifier).Value;
         using (Assignment4Context context = new Assignment4Context())
         {
             if (pProduct.Id == 0)
             {
                 pProduct.AddedDate         = DateTime.Now;
                 pProduct.ApplicationUserId = userId;
                 context.Products.Add(pProduct);
                 context.SaveChanges();
                 return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Product Added." }));
             }
             else
             {
                 var product = context.Products.Find(pProduct.Id);
                 if (User.IsInRole("Admin") || (product.ApplicationUserId == userId))
                 {
                     product.Name        = pProduct.Name;
                     product.Description = pProduct.Description;
                     product.Payable     = pProduct.Payable;
                     context.SaveChanges();
                     return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Product Updated." }));
                 }
             }
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Product not added/updated." }));
     }
     catch (Exception e)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new { success = false, message = "Error Occurred. Scary Details:" + e.Message }));
     }
 }
        //public ProductMembership Get(int id)
        // {
        //     using (Assignment4Context context = new Assignment4Context())
        //     {
        //         Product product = context.Products.Find(id);
        //         return new ProductMembership { UserName = this.User.Identity.Name, ProductId = product.Id };
        //     }
        // }

        public List <Models.ProductMembershipDTO> Get()
        {
            using (Assignment4Context context = new Assignment4Context())
            {
                return(context.ProductMembership.Select(s => new ProductMembershipDTO {
                    ID = s.ID, ProductId = s.ProductId, UserId = s.UserId
                }).ToList());
            }
        }
 public ProductMembershipDTO Get(int id)
 {
     using (Assignment4Context context = new Assignment4Context())
     {
         ProductMembership pmember = context.ProductMembership.Find(id);
         return(new ProductMembershipDTO {
             ID = pmember.ID, ProductId = pmember.ProductId, UserId = pmember.UserId
         });
     }
 }
Esempio n. 6
0
        // GET api/<controller>
        public List <EditableProduct> Get()
        {
            List <EditableProduct> products = null;

            //var userId= User.Identity.Name;
            if (HttpContext.Current.Cache["ProductList"] != null)
            {
                products = (List <EditableProduct>)HttpContext.Current.Cache["ProductList"];
            }

            using (Assignment4Context context = new Assignment4Context())
            {
                var isAdmin  = this.User.IsInRole("Admin");
                var isLeader = this.User.IsInRole("Leader");
                var isSeeker = this.User.IsInRole("Seeker");

                var userId = ((ClaimsPrincipal)this.User).FindFirst(ClaimTypes.NameIdentifier).Value;
                if (products == null)
                {
                    products = context.Products.Select(t => new EditableProduct {
                        IsJoinable = isSeeker, IsEditable = isAdmin, Id = t.Id, AddedDate = t.AddedDate, ApplicationUserId = t.ApplicationUserId, Payable = t.Payable, Description = t.Description, Name = t.Name
                    }).ToList();
                    HttpContext.Current.Cache["ProductList"] = products;
                }

                foreach (EditableProduct product in products)
                {
                    product.IsJoinable = isSeeker;
                    ///  if (product.ApplicationUserId == userId)
                    //  {
                    //    product.IsEditable = true;
                    if (User.IsInRole("Admin") || (product.ApplicationUserId == userId))
                    {
                        product.IsEditable = true;
                        product.IsJoinable = false;
                    }
                    if (User.IsInRole("Seeker") || (product.ApplicationUserId == userId))
                    {
                        product.IsEditable = false;
                        product.IsJoinable = true;
                    }
                    if (User.IsInRole("Leader") && (product.ApplicationUserId == userId))
                    {
                        product.IsEditable = true;
                        product.IsJoinable = false;
                    }
                }
                // }

                return(products);
            }
        }
Esempio n. 7
0
        //public HttpResponseMessage Post([FromBody]ProductMembership value)
        //{
        //    try
        //    {
        //        var userId = ((ClaimsPrincipal)this.User).FindFirst(ClaimTypes.NameIdentifier).Value;
        //        using (Assignment4Context context = new Assignment4Context())
        //        {
        //            if (User.IsInRole("Seeker"))
        //            {

        //                var productMemberShip = context.ProductMembership.Create();
        //                productMemberShip.ProductId = value.ProductId;
        //                productMemberShip.UserId = userId;
        //                context.ProductMembership.Add(productMemberShip);
        //                context.SaveChanges();

        //                return Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Joined." });
        //            }
        //        }
        //        return Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Seeker not joined" });

        //    }
        //    catch (Exception e)
        //    {
        //        return Request.CreateResponse(HttpStatusCode.OK, new { success = false, message = "Error Occurred. Scary Details:" + e.Message });
        //    }

        //}

        public HttpResponseMessage Delete(int id)
        {
            using (Assignment4Context context = new Assignment4Context())
            {
                //  if (!User.IsInRole("Seeker"))
                {
                    var product = context.Products.Find(id);
                    context.Products.Remove(product);
                    context.SaveChanges();
                    HttpContext.Current.Cache.Remove("ProductList");
                    HttpContext.Current.Cache.Remove("Product" + id);
                    return(Request.CreateResponse(HttpStatusCode.OK, "Okay"));
                }
            }
        }
Esempio n. 8
0
        // GET api/<controller>/5
        public EditableProduct Get(int id)
        {
            var userId = ((ClaimsPrincipal)this.User).FindFirst(ClaimTypes.NameIdentifier).Value;

            using (Assignment4Context context = new Assignment4Context())
            {//add payable
                var             product  = context.Products.Find(id);
                EditableProduct eProduct = new EditableProduct {
                    AddedDate = product.AddedDate, ApplicationUserId = product.ApplicationUserId, Description = product.Description, Id = product.Id, Name = product.Name, Payable = product.Payable, IsEditable = false, Version = product.Timestamp
                };
                if (User.IsInRole("Admin") || (product.ApplicationUserId == userId))
                {
                    eProduct.IsEditable = true;
                }
                return(eProduct);
            }
        }
 public HttpResponseMessage Delete(int id)
 {
     using (Assignment4Context context = new Assignment4Context())
     {
         var couldDelete = (User.IsInRole("Admin") || User.IsInRole("Leader"));
         if (couldDelete)
         {
             ProductMembership pmember = context.ProductMembership.Find(id);
             context.ProductMembership.Remove(pmember);
             context.SaveChanges();
             return(Request.CreateResponse(HttpStatusCode.OK, "Okay"));
         }
         else
         {
             return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Project can't be deleted." }));
         }
     }
 }
        public UserRightsDTO Get()
        {
            var rights = new UserRightsDTO();

            //Check rights

            using (Assignment4Context context = new Assignment4Context())
            {
                if (this.User.IsInRole("Seeker"))
                {
                    rights.IsSeekerRight = true;
                }
                else
                {
                    rights.IsSeekerRight = false;
                }
            }
            return(rights);
        }
Esempio n. 11
0
 // DELETE api/<controller>/5
 public HttpResponseMessage Delete(int id)
 {
     try
     {
         var userId = ((ClaimsPrincipal)this.User).FindFirst(ClaimTypes.NameIdentifier).Value;
         using (Assignment4Context context = new Assignment4Context())
         {
             Product product = context.Products.Find(id);
             if (User.IsInRole("Admin") || (product.ApplicationUserId == userId))
             {
                 context.Products.Remove(product);
                 context.SaveChanges();
                 return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Product Deleted." }));
             }
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new { success = false, message = "Product Not Deleted. Not authorized." }));
     }
     catch (Exception e)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new { success = false, message = "Error Occurred. Scary Details:" + e.Message }));
     }
 }
Esempio n. 12
0
        // GET api/<controller>
        public List <EditableProduct> Get()
        {
            using (Assignment4Context context = new Assignment4Context())
            {
                var isAdmin = this.User.IsInRole("Admin");

                var userId   = ((ClaimsPrincipal)this.User).FindFirst(ClaimTypes.NameIdentifier).Value;
                var products = context.Products.Select(t => new EditableProduct {
                    Id = t.Id, AddedDate = t.AddedDate, ApplicationUserId = t.ApplicationUserId, Payable = t.Payable, Description = t.Description, Name = t.Name, IsEditable = isAdmin
                }).ToList();
                if (!isAdmin)
                {
                    foreach (EditableProduct product in products)
                    {
                        if (product.ApplicationUserId == userId)
                        {
                            product.IsEditable = true;
                        }
                    }
                }
                return(products);
            }
        }
Esempio n. 13
0
 public Assignment4UserStore(Assignment4Context context) : base(context)
 {
 }
Esempio n. 14
0
        public HttpResponseMessage Post([FromBody] EditableProduct value)
        {
            try
            {
                var userId = ((ClaimsPrincipal)this.User).FindFirst(ClaimTypes.NameIdentifier).Value;
                using (Assignment4Context context = new Assignment4Context())
                {
                    if (value.Id == 0 && !User.IsInRole("Seeker"))
                    {
                        Product newProduct = context.Products.Create();
                        newProduct.Name              = value.Name;
                        newProduct.AddedDate         = DateTime.Now;
                        newProduct.ApplicationUserId = userId;
                        newProduct.Description       = value.Description;
                        newProduct.Id      = value.Id;
                        newProduct.Payable = value.Payable;
                        //newProduct.JoinedMemberList = value.JoinedMemberList;
                        context.Products.Add(newProduct);
                        context.SaveChanges();
                        HttpContext.Current.Cache.Remove("ProductList");
                        return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Product Added." }));
                    }
                    else if (User.IsInRole("Seeker"))
                    {
                        var productMemberShip = context.ProductMembership.Create();
                        var product           = context.Products.Find(value.Id);
                        //product.JoinedMemberList = product.JoinedMemberList.Union
                        //    (User.Identity.Name.ToList());
                        //product.JoinedMemberList += userId;
                        productMemberShip.ProductId = value.Id;
                        //productMemberShip.Name = value.Name;  // project title
                        productMemberShip.UserId = User.Identity.Name; // user email
                        context.ProductMembership.Add(productMemberShip);
                        context.SaveChanges();
                        HttpContext.Current.Cache.Remove("ProductList");

                        //return Request.CreateResponse(HttpStatusCode.OK, new { success = false, message = "Seeker Can't add project" });
                        return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "You have joined this project." }));
                    }
                    else
                    {
                        var product = context.Products.Find(value.Id);
                        if (User.IsInRole("Admin") || (product.ApplicationUserId == userId))
                        {
                            product.Name              = value.Name;
                            product.AddedDate         = DateTime.Now;
                            product.ApplicationUserId = userId;
                            product.Description       = value.Description;
                            product.Id      = value.Id;
                            product.Payable = value.Payable;
                            // product.JoinedMemberList = value.JoinedMemberList;
                            context.SaveChanges();
                            HttpContext.Current.Cache.Remove("ProductList");
                            return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Product Updated." }));
                        }
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.OK, new { success = true, message = "Product not added/updated." }));
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new { success = false, message = "Error Occurred. Scary Details:" + e.Message }));
            }
        }