Beispiel #1
0
        public ActionResult CreateW(ApiAuthRegister data, MemberJoinProject memberJoinProject, string MemberID, string ProjectID, string emailorgname)
        {
            var project = db.Projects.First(x => x.ProjectID == ProjectID);

            ViewBag.ProjectName = project.ProjectName;

            if (Validator.IsValidEmail(emailorgname))
            {
                var gro = db.Members.Where(x => x.Email == emailorgname).FirstOrDefault();
                if (gro == null)
                {
                    //寄送email
                    //data=
                    ViewBag.Message = "此使用者未註冊會員";
                    return(RedirectToAction("CreateW", new { ProjectID, MemberID }));
                }
                else
                {
                    memberJoinProject.ProjectID     = ProjectID;
                    memberJoinProject.MemberIDOwner = MemberID;
                    memberJoinProject.SharePerID    = Share.Share;
                    memberJoinProject.MemberIDJoin  = gro.MemberID;

                    bool exists = db.MemberJoinProjects.Any(m => m.MemberIDOwner == MemberID && m.ProjectID == ProjectID && m.MemberIDJoin == gro.MemberID);
                    db.MemberJoinProjects.Add(memberJoinProject);

                    if (exists == true)
                    {
                        return(RedirectToAction("CreateW", new { ProjectID, MemberID }));
                    }
                }
            }

            else
            {
                bool groupexist = db.Groups.Any(x => x.GroupName == emailorgname);
                if (groupexist == false)
                {
                    ViewBag.Message = "此群組不存在";
                }
                else
                {
                    var gro = db.Groups.First(x => x.GroupName == emailorgname);
                    IEnumerable <GroupMember> groupmemberList = db.GroupMembers.Where(m => m.MemberIDOwner == MemberID && m.GroupID == gro.GroupID);
                    //var groupmemberList = db.GroupMembers.Where(m => m.MemberIDOwner == MemberID && m.GroupID == gro.GroupID);
                    bool exists = db.MemberJoinProjects.Any(m => m.MemberIDOwner == MemberID && m.ProjectID == ProjectID && m.MemberIDJoin == gro.MemberID);
                    if (exists == true)
                    {
                        return(RedirectToAction("CreateW", new { ProjectID, MemberID }));
                    }
                    else
                    {
                        foreach (var item in groupmemberList)
                        {
                            MemberJoinProject m = new MemberJoinProject()
                            {
                                MemberIDJoin  = item.MemberIDInGroup,
                                ProjectID     = ProjectID,
                                MemberIDOwner = MemberID,
                                SharePerID    = Share.Share
                            };
                            db.MemberJoinProjects.Add(m);
                        }
                        db.SaveChanges();
                    }
                    //db.SaveChanges();
                }
            }
            db.SaveChanges();

            var memberJoinProjects = db.MemberJoinProjects.Include(m => m.Member).Include(m => m.Project).Where(m => m.MemberIDOwner == MemberID && m.ProjectID == ProjectID);

            return(RedirectToAction("CreateW", new { ProjectID, MemberID }));
        }
Beispiel #2
0
        public HttpResponseMessage Register(ApiAuthRegister data)
        {
            Env                 env       = new Env();
            SimpleJws           jws       = new SimpleJws();
            HttpResponseMessage response  = new HttpResponseMessage();
            string              token     = data.Token;
            bool                isSuccess = true;
            string              messages  = "";

            if (token == null) // 缺乏 token
            {
                isSuccess           = false;
                messages            = "You don't have permission to access this server.";
                response.StatusCode = HttpStatusCode.Unauthorized; // 401
            }
            else if (!jws.Validate(token, env.SecretKey))          // 缺乏 token
            {
                isSuccess           = false;
                messages            = "註冊連結已失效!!!";
                response.StatusCode = HttpStatusCode.Unauthorized; // 401
            }
            else if (data.Password.Length < 6 || data.Password.Length > 18)
            {
                isSuccess           = false;
                messages            = "Your password must be between 6 and 18 characters";
                response.StatusCode = HttpStatusCode.BadRequest; // 400
            }
            else
            {
                MemberSystem memberSystem       = new MemberSystem();
                Dictionary <string, object> jwt = jws.Decode(token);
                if (!jwt.ContainsKey("Email") || !jwt.ContainsKey("Gender") || !jwt.ContainsKey("Birthday"))
                {
                    isSuccess           = false;
                    messages            = "Invalid operation.";
                    response.StatusCode = HttpStatusCode.BadRequest; // 400
                }
                else
                {
                    string name = jwt.ContainsKey("UserName")
            ? (string)jwt["UserName"]
            : null;
                    DateTime now    = DateTime.Now;
                    Member   member = new Member
                    {
                        Email         = (string)jwt["Email"],
                        Psw           = ChoyPassword.Hash(data.Password, TimeConverter.ToTimestamp(now)),
                        NickName      = name,
                        Gender        = (bool)jwt["Gender"],
                        Bday          = TimeConverter.ToDateTime((long)jwt["Birthday"]),
                        ContactEmail  = (string)jwt["Email"],
                        CreateAt      = now,
                        ProfilePic    = memberSystem.GetFileBytes("\\Images\\carot.png"),
                        ImageMimeType = "image/png",
                        PerCode       = 0,
                        IsSuspended   = false,
                        LastLogInTime = now
                    };
                    if (!memberSystem.Register(member))
                    {
                        isSuccess           = false;
                        messages            = "Registration failed";
                        response.StatusCode = HttpStatusCode.InternalServerError; // 500
                    }
                    else
                    {
                        isSuccess           = true;
                        messages            = "Registration success";
                        response.StatusCode = HttpStatusCode.OK; // 200
                    }
                }
            }

            var result = new
            {
                Success  = isSuccess,
                Messages = messages
            };

            response.Content = new StringContent(JsonConvert.SerializeObject(result));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            return(response);
        }