public CaptureInfoOutput GetCaptureStatus([FromBody] CaptureInfoInput input) { CaptureInfoOutput output = new CaptureInfoOutput(); MemberCapture capture = _db.MemberCaptures.Where(e => e.Id.Equals(input.CaptureId)).FirstOrDefault(); if (capture == null) { output.Status = "CAPTURE_NOT_EXIST"; } else { if (capture.Status == 1) { output.Status = "ACTIVE"; } else if (capture.Status == 2) { if (capture.AppLoginSession != null && capture.Type == 1) { output.SessionId = capture.AppLoginSession.Id; output.SessionKey = capture.AppLoginSession.Key; } output.Status = "SCANNED"; } else { output.Status = "EXPIRED"; } } return(output); }
public bool RetrieveTempStore() { string id = null; string code = null; if (Request.Cookies["CaptureId"] != null && Request.Cookies["CaptureCode"] != null) { id = Request.Cookies["CaptureId"].ToString(); code = Request.Cookies["CaptureCode"].ToString(); } AspUserService aspUser = new AspUserService(_db, this); if (id != null && code != null && aspUser.IsValid) { MemberCapture capture = _db.MemberCaptures.Where(e => e.Id.Equals(id.ToString()) && e.Status == 2).FirstOrDefault(); if (capture != null) { if (capture.Code.Equals(code.ToString())) { List <Order> orders = capture.AppLoginSession.User.ListOrders.ToList(); foreach (Order item in orders) { item.User = aspUser.User; } Response.Cookies.Append("CaptureId", capture.Id, new Microsoft.AspNetCore.Http.CookieOptions() { Expires = DateTime.UtcNow });; Response.Cookies.Append("CaptureCode", capture.Code, new Microsoft.AspNetCore.Http.CookieOptions() { Expires = DateTime.UtcNow }); capture.AppLoginSession.User.Status = 0; capture.AppLoginSession.User.Deleted = true; capture.Status = 0; _db.SaveChanges(); } } } return(true); }
public GenerateCaptureOutput Index([FromBody] GenerateCaptureInput input) { GenerateCaptureOutput output = new GenerateCaptureOutput(); if (input == null) { output.Result = "INPUT_IS_NULL"; } else { if (input.Type == 1) { MemberCapture mc = new MemberCapture() { Type = 1 }; _db.MemberCaptures.Add(mc); _db.SaveChanges(); output.CaptureId = mc.Id; output.CaptureCode = mc.Code; string[] urlFrag = Request.GetDisplayUrl().Split('/'); output.CaptureUrl = urlFrag[0] + "//" + urlFrag[2] + "/capture?" + "CaptureId=" + output.CaptureId + "&CaptureCode=" + output.CaptureCode; output.CaptureQR = urlFrag[0] + "//" + urlFrag[2] + "/qrcode/" + QRCodeService.GenerateQRCode(_hostingEnvironment, output.CaptureUrl); output.Result = "OK"; } else if (input.Type == 2) { AppLoginSession session = _db.AppLoginSessions.Where(e => e.Id.Equals(input.SessionId) && e.Status == 1).FirstOrDefault(); if (session == null) { output.Result = "SESSION_NOT_FOUND"; } else { if (!session.Key.Equals(input.SessionKey)) { output.Result = "WRONG_KEY"; } else { MemberCapture mc = new MemberCapture() { AppLoginSession = session, Type = 2 }; _db.MemberCaptures.Add(mc); _db.SaveChanges(); string[] urlFrag = Request.GetDisplayUrl().Split('/'); output.CaptureId = mc.Id; output.CaptureCode = mc.Code; output.CaptureUrl = urlFrag[0] + "//" + urlFrag[2] + "/capture?" + "CaptureId=" + output.CaptureId + "&CaptureCode=" + output.CaptureCode; output.CaptureQR = urlFrag[0] + "//" + urlFrag[2] + "/qrcode/" + QRCodeService.GenerateQRCode(_hostingEnvironment, output.CaptureUrl); output.Result = "OK"; } } } else { output.Result = "TYPE_NOT_EXIST"; } } return(output); }
public IActionResult Index(string CaptureId, string CaptureCode) { /* * ViewBag status * 1 - Capture detail not found (error) * 2 - QR Expired * 3 - Detail updated to existing session * 4 - New session added to client * 5 - Detail captured to server * 6 - No capture registered (no initial capture) */ if (string.IsNullOrEmpty(CaptureId) || string.IsNullOrEmpty(CaptureCode)) { ViewBag.Status = 1; } else { MemberCapture capture = _db.MemberCaptures.Where(e => e.Id.Equals(CaptureId) && e.Code.Equals(CaptureCode) && e.Deleted == false).FirstOrDefault(); if (capture == null) { ViewBag.Status = 2; } else { if (capture.Status == 1) { AspUserService aspUser = new AspUserService(_db, this); if (capture.Type == 1) { if (aspUser.IsValid) { MemberCapture newCapture = _db.MemberCaptures.Where(e => e.Id.Equals(CaptureId) && e.Code.Equals(CaptureCode) && e.Deleted == false && e.Status == 1).FirstOrDefault(); if (newCapture == null) { ViewBag.Status = 2; } else { AppLoginSession newSession = new AppLoginSession(Guid.NewGuid().ToString(), Request) { User = aspUser.User, Status = 1 }; newCapture.AppLoginSession = newSession; newCapture.Status = 2; _db.AppLoginSessions.Add(newSession); _db.SaveChanges(); ViewBag.Status = 5; } } else { if (Request.Cookies["CaptureId"] != null && Request.Cookies["CaptureCode"] != null) { MemberCapture existingCapture = _db.MemberCaptures.Where(e => e.Id.Equals(Request.Cookies["CaptureId"].ToString()) && e.Code.Equals(Request.Cookies["CaptureCode"].ToString()) && e.Deleted == false && e.Status == 2).FirstOrDefault(); if (existingCapture == null) { ViewBag.Status = 2; } else { MemberCapture newCapture = _db.MemberCaptures.Where(e => e.Id.Equals(CaptureId) && e.Code.Equals(CaptureCode) && e.Deleted == false && e.Status == 1).FirstOrDefault(); newCapture.AppLoginSession = existingCapture.AppLoginSession; newCapture.Status = 2; _db.SaveChanges(); ViewBag.Status = 5; } } else { ViewBag.Status = 6; } } } else if (capture.Type == 2) { if (aspUser.IsValid) { List <Order> orders = capture.AppLoginSession.User.ListOrders.ToList(); foreach (Order item in orders) { item.User = aspUser.User; } capture.Status = 2; _db.SaveChanges(); ViewBag.Status = 3; } else if (Request.Cookies["CaptureId"] != null) { MemberCapture existingCapture = _db.MemberCaptures.Where(e => e.Id.Equals(Request.Cookies["CaptureId"].ToString())).FirstOrDefault(); if (existingCapture == null) { ViewBag.Status = 1; } else { if (existingCapture.Code.Equals(Request.Cookies["CaptureCode"].ToString()) && existingCapture.Status == 2) { List <Order> orders = capture.AppLoginSession.User.ListOrders.ToList(); foreach (Order item in orders) { item.User = existingCapture.AppLoginSession.User; } capture.Status = 2; Response.Cookies.Append("CaptureId", existingCapture.Id, new Microsoft.AspNetCore.Http.CookieOptions() { Expires = DateTime.UtcNow.AddYears(5), HttpOnly = true, Secure = true, SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax });; Response.Cookies.Append("CaptureCode", existingCapture.Code, new Microsoft.AspNetCore.Http.CookieOptions() { Expires = DateTime.UtcNow.AddYears(5), HttpOnly = true, Secure = true, SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax }); _db.SaveChanges(); ViewBag.Status = 3; } else { ViewBag.Status = 1; } } ViewBag.Status = 3; } else { capture.Status = 2; _db.SaveChanges(); Response.Cookies.Append("CaptureId", capture.Id, new Microsoft.AspNetCore.Http.CookieOptions() { Expires = DateTime.UtcNow.AddYears(5), HttpOnly = true, Secure = true, SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax });; Response.Cookies.Append("CaptureCode", capture.Code, new Microsoft.AspNetCore.Http.CookieOptions() { Expires = DateTime.UtcNow.AddYears(5), HttpOnly = true, Secure = true, SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax }); ViewBag.Status = 4; } } } else { ViewBag.Status = 2; } } } return(View()); }