Example #1
0
        public async Task <IActionResult> Login([FromBody] LoginInput reqData)
        {
            int resHttpStatusCode                    = 400;
            Dictionary <string, string> res          = new Dictionary <string, string>();
            Func <string, Task <bool> > authverifier = null;
            string authverifierToken                 = "";

            switch (reqData.provider)
            {
            case "GOOGLE":
                authverifier      = AuthToken.VerifyGoogleOauthV2Token;
                authverifierToken = reqData.idToken;
                break;

            case "FACEBOOK":
                authverifier      = AuthToken.VerifyFacebookOauthToken;
                authverifierToken = reqData.authToken;
                break;
            }
            if (authverifier != null && await authverifier(authverifierToken).ConfigureAwait(true))
            {
                int userSocialId = 0;
                using (var ctx = new ConclaveDbContext())
                {
                    var entity = from u in ctx.UserSocial where u.Email == reqData.email && u.Provider == reqData.provider select u;
                    if (entity.FirstOrDefault() != null)
                    {
                        userSocialId = entity.First().Id;
                    }
                    else
                    {
                        UserSocial user = new UserSocial()
                        {
                            Provider = reqData.provider,
                            Email    = reqData.email,
                            UserName = reqData.name
                        };
                        ctx.Add(user);
                        ctx.SaveChanges();
                        userSocialId = user.Id;
                    }
                }

                string accessToken  = AuthToken.GetNewAccessToken(userSocialId);
                string refreshToken = AuthToken.GetNewRefreshToken(userSocialId);
                res.Add("success", "true");
                res.Add("email", reqData.email);
                res.Add("accessToken", accessToken);
                res.Add("refreshToken", refreshToken);
                _cache.StringSet(accessToken, userSocialId.ToString());
                _cache.StringSet(refreshToken, userSocialId.ToString());
                resHttpStatusCode = 200;
            }
            else
            {
                res.Add("success", "false");
                res.Add("msg", "Invalid Token");
            }
            return(StatusCode(resHttpStatusCode, JsonConvert.SerializeObject(res)));
        }
Example #2
0
        public IActionResult Get(int id)
        {
            dynamic response          = new { success = "false", msg = "NA" };
            int     resHttpStatusCode = 400;

            try
            {
                using (var context = new ConclaveDbContext())
                {
                    var res = context.Post.Where(x => x.Id == id).FirstOrDefault();
                    if (res != null)
                    {
                        response = new { success = "true", text = res.Text };
                        if (res.Media == "Y")
                        {
                            var mediaList = (from ml in context.PostMedia where ml.PostId == res.Id select new { path = ml.Path, type = ml.Filetype }).ToList();
                            response = new { success = "true", text = res.Text, attachments = mediaList };
                        }
                        resHttpStatusCode = 200;
                    }
                }
            }
            catch (Exception e)
            {
                resHttpStatusCode = 500;
                CLogger.Log(e);
                response = new { success = "false", msg = "An error has occured" };
            }
            HttpContext.Response.StatusCode = resHttpStatusCode;
            return(new JsonResult(response));
        }
Example #3
0
        public IActionResult Delete(int id)
        {
            int    resHttpStatusCode = 400;
            string resMsg            = "Bad request";

            try
            {
                using (var ctx = new ConclaveDbContext())
                {
                    var itemToRemove = ctx.Post.SingleOrDefault(x => x.Id == id);
                    if (itemToRemove != null)
                    {
                        if (itemToRemove.Media == "Y")
                        {
                            var q = (from item in ctx.PostMedia where item.PostId == id select new { id = item.Id }).ToList();
                            foreach (var item in q)
                            {
                                PostMedia pm = new PostMedia()
                                {
                                    Id = item.id
                                };
                                ctx.PostMedia.Attach(pm);
                                ctx.PostMedia.Remove(pm);
                            }
                            ctx.SaveChanges();
                        }
                        ctx.Post.Attach(itemToRemove);
                        ctx.Post.Remove(itemToRemove);
                        ctx.SaveChanges();
                        _cache.StringSet("posts-get-all-isnew", "y");
                        resHttpStatusCode = 200;
                    }
                }
            }
            catch (Exception e)
            {
                CLogger.Log(e);
                resHttpStatusCode = 500;
            }

            HttpContext.Response.StatusCode = resHttpStatusCode;
            return(new JsonResult(new
            {
                success = (resHttpStatusCode == 200 ? "true" : "false"),
                msg = resMsg
            }));
        }
Example #4
0
        public IActionResult Get(int offset = -1, int limit = -1)
        {
            int    resHttpStatusCode = 400;
            string resMsg            = "Bad request";
            var    res = new List <dynamic>();

            try
            {
                if (offset != -1 || limit != -1)
                {
                    using (var context = new ConclaveDbContext())
                    {
                        var postList = (from post in context.Post join user in context.UserSocial on post.UserSocialId equals user.Id select new { id = post.Id, username = user.UserName, date = post.Date, text = post.Text, postid = post.Id, postmedia = (post.Media == "N" ? "No" : "Yes") });
                        if (offset != -1)
                        {
                            postList = postList.Skip(offset);
                        }

                        if (limit != -1)
                        {
                            postList = postList.Take(limit);
                        }
                        foreach (var rec in postList)
                        {
                            if (rec.postmedia == "Yes")
                            {
                                var pathPrefix = Request.Scheme + "://" + Request.Host;
                                var mediaList  = (from m in context.PostMedia where m.PostId == rec.postid select new { path = pathPrefix + m.Path, type = m.Filetype }).ToList();
                                res.Add(new { id = rec.id, username = rec.username, date = rec.date, text = rec.text, media = mediaList });
                            }
                            else
                            {
                                res.Add(new { id = rec.id, username = rec.username, date = rec.date, text = rec.text });
                            }
                        }
                        resHttpStatusCode = 200;
                        resMsg            = "NA";
                    }
                }
                else
                {
                    string allPosts;
                    if (_cache.KeyExists("post-get-all") && _cache.StringGet("posts-get-all-isnew") == "n")
                    {
                        allPosts = _cache.StringGet("post-get-all");
                        JArray obj = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(allPosts);
                        foreach (var item in obj)
                        {
                            res.Add(item);
                        }
                        //res = obj.ToList();
                        resHttpStatusCode = 200;
                    }
                    else
                    {
                        using (var context = new ConclaveDbContext())
                        {
                            var postList = (from post in context.Post join user in context.UserSocial on post.UserSocialId equals user.Id select new { id = post.Id, username = user.UserName, date = post.Date, text = post.Text, postid = post.Id, postmedia = (post.Media == "N" ? "No" : "Yes") });

                            foreach (var rec in postList)
                            {
                                if (rec.postmedia == "Yes")
                                {
                                    var pathPrefix = Request.Scheme + "://" + Request.Host;
                                    var mediaList  = (from m in context.PostMedia where m.PostId == rec.postid select new { path = pathPrefix + m.Path, type = m.Filetype }).ToList();
                                    res.Add(new { id = rec.id, username = rec.username, date = rec.date, text = rec.text, media = mediaList });
                                }
                                else
                                {
                                    res.Add(new { id = rec.id, username = rec.username, date = rec.date, text = rec.text });
                                }
                            }
                        }
                        allPosts = Newtonsoft.Json.JsonConvert.SerializeObject(res);
                        _cache.StringSet("post-get-all", allPosts);
                        _cache.StringSet("posts-get-all-isnew", "n");
                        resHttpStatusCode = 200;
                    }
                }
            }
            catch (Exception e)
            {
                CLogger.Log(e);
                resHttpStatusCode = 500;
            }
            HttpContext.Response.StatusCode = resHttpStatusCode;
            dynamic response = new ExpandoObject();

            if (resHttpStatusCode == 200)
            {
                response.success = "true";
                response.posts   = res;
            }
            else
            {
                response.success = "false";
                response.msg     = resMsg;
            }

            return(new JsonResult(response));
        }
Example #5
0
        public async Task <IActionResult> Put(int id)
        {
            int    resHttpStatusCode = 400;
            string resMsg            = "Bad request";

            try
            {
                using (var ctx = new ConclaveDbContext())
                {
                    Post post = (from p in ctx.Post where p.Id == id select p).FirstOrDefault();
                    if (post != null)
                    {
                        var uploadPath = _config["AppConfig:Storage:Uploads"];

                        if (Request.Form["text"].ToString() != "")
                        {
                            post.Text = Request.Form["text"].ToString();
                        }

                        if (Request.Form.Files.Count > 0)
                        {
                            List <Tuple <string, string> > attachmentList = new List <Tuple <string, string> >();
                            foreach (var formFile in Request.Form.Files)
                            {
                                if (formFile.Length > 0)
                                {
                                    var filetype = formFile.ContentType.Split("/")[0];
                                    var filename = Guid.NewGuid().ToString() + DateTime.UtcNow.ToString("yyyyMMddHHmmsss") + formFile.FileName.Substring(formFile.FileName.LastIndexOf(".", System.StringComparison.Ordinal));
                                    var filePath = Path.Combine(uploadPath, filename);
                                    var origin   = Request.Scheme + "://" + Request.Host;

                                    using (var stream = System.IO.File.Create(filePath))
                                    {
                                        await formFile.CopyToAsync(stream).ConfigureAwait(false);

                                        attachmentList.Add(Tuple.Create(filetype, origin + "/" + uploadPath + filename));
                                    }
                                }
                            }
                            post.Media = "Y";
                            ctx.PostMedia.RemoveRange(ctx.PostMedia.Where(x => x.PostId == id));
                        }
                        ctx.SaveChanges();
                        _cache.StringSet("posts-get-all-isnew", "y");
                        resHttpStatusCode = 200;
                        resMsg            = "Post updated successfully";
                    }
                }
            }
            catch (Exception e)
            {
                CLogger.Log(e);
                resHttpStatusCode = 500;
                resMsg            = "An internal error has occurred";
            }

            HttpContext.Response.StatusCode = resHttpStatusCode;
            return(new JsonResult(new
            {
                success = (resHttpStatusCode == 200 ? "true" : "false"),
                msg = resMsg
            }));
        }
Example #6
0
        public async Task <IActionResult> Post()
        {
            int    resHttpStatusCode = 400;
            string resMsg            = "Bad request";

            try
            {
                var uploadPath = _config["AppConfig:Storage:Uploads"];
                if (!string.IsNullOrEmpty(Request.Form["text"].ToString()))
                {
                    Post post = new Post();
                    post.UserSocialId = AuthToken.GetUserSocialId(HttpContext.Request.Headers["Authorization"].ToString().Split(" ")[1]);
                    post.Text         = Request.Form["text"].ToString();

                    List <Tuple <string, string> > attachmentList = new List <Tuple <string, string> >();
                    foreach (var formFile in Request.Form.Files)
                    {
                        if (formFile.Length > 0)
                        {
                            var filetype = formFile.ContentType.Split("/")[0];
                            var filename = Guid.NewGuid().ToString() + DateTime.UtcNow.ToString("yyyyMMddHHmmsss") + formFile.FileName.Substring(formFile.FileName.LastIndexOf(".", System.StringComparison.Ordinal));
                            var filePath = Path.Combine(uploadPath, filename);

                            using (var stream = System.IO.File.Create(filePath))
                            {
                                await formFile.CopyToAsync(stream).ConfigureAwait(false);

                                attachmentList.Add(Tuple.Create(filetype, "/" + uploadPath + filename));
                            }
                        }
                    }
                    post.Media = attachmentList.Count() > 0 ? "Y" : "N";
                    using (var ctx = new ConclaveDbContext())
                    {
                        ctx.Post.Add(post);
                        ctx.SaveChanges();
                        var postid = post.Id;
                        foreach (var(filetype, filepath) in attachmentList)
                        {
                            PostMedia pm = new PostMedia();
                            pm.PostId   = postid;
                            pm.Path     = filepath;
                            pm.Filetype = filetype;
                            ctx.PostMedia.Add(pm);
                            ctx.SaveChanges();
                        }
                    }
                    _cache.StringSet("posts-get-all-isnew", "y");
                    resHttpStatusCode = 200;
                    resMsg            = "Post addedd successfully";
                }
            }
            catch (Exception e)
            {
                resHttpStatusCode = 500;
                resMsg            = "An internal error has occurred";
                CLogger.Log(e);
            }
            HttpContext.Response.StatusCode = resHttpStatusCode;
            return(new JsonResult(new
            {
                success = (resHttpStatusCode == 200 ? "true" : "false"),
                msg = resMsg
            }));;
        }