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