Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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());
        }