Example #1
0
        public ActionResult Manage()
        {
            photogEntities db         = new photogEntities();
            var            studioList = db.Studios.ToList().Where(x => x.UserStudios.Any(y => y.userid == UserAuthentication.Identity().id)).ToList();

            return(View("ManageStudios", studioList));
        }
Example #2
0
        public IHttpActionResult GetPackageTemplate()
        {
            photogEntities db     = new photogEntities();
            var            charge = db.Charges.Where(x => x.StudioID == StudioID).ToList().Select((x, index) => new { x.Name, x.Price, x.Unit });

            return(Ok(charge));
        }
Example #3
0
        public IHttpActionResult loadPackageCharges(int id)
        {
            photogEntities db    = new photogEntities();
            var            model = db.Charges.Where(x => x.StudioID == id).Select(x => new { x.id, x.Name, x.Description, x.Price, x.Unit }).ToList();

            return(Ok(model));
        }
Example #4
0
        public ActionResult ForgotPassword(ForgotPasswordViewModel forgot)
        {
            if (ModelState.IsValid && forgot.validate(ModelState))
            {
                photogEntities db    = new photogEntities();
                var            users = db.Users.FirstOrDefault(x => x.email.ToLower() == forgot.Email.ToLower());

                if (users != null)
                {
                    users.isForgotPassword = true;
                    users.verifiedKey      = (new Backbone()).Random(8);
                    db.SaveChanges();

                    string url          = string.Format("https://{0}/Account/Validate?key={1}", Request.Url.Authority, users.verifiedKey);
                    string emailContent = String.Format("Click Here to reset your password : {0}", url);

                    var client = new SmtpClient("smtp.titan.email", 587)
                    {
                        Credentials = new NetworkCredential("*****@*****.**", "RareMaHZUU")
                    };
                    client.Send("*****@*****.**", forgot.Email, "Verify your Account", emailContent);
                }

                ViewBag.Email = forgot.Email.ToLower();
                return(View("ValidateEmail"));
            }
            return(View("ForgotPasswordMain"));
        }
Example #5
0
        public ActionResult ResetPassword(ResetPasswordViewModel forgot)
        {
            if (TempData["ForgotPasswordEmail"] != null && !string.IsNullOrWhiteSpace(forgot.Email))
            {
                if (ModelState.IsValid)
                {
                    photogEntities db    = new photogEntities();
                    var            users = db.Users.FirstOrDefault(x => x.email.ToLower() == forgot.Email.ToLower());

                    if (users != null)
                    {
                        var passwordHash = Backbone.ComputeSha256Hash(forgot.Password);

                        users.password = passwordHash;
                        db.SaveChanges();
                        TempData["ResetPasswordSuccess"] = "1";
                        return(RedirectToAction("SignIn", "Account"));
                    }
                }
                else
                {
                    TempData.Keep("ForgotPasswordEmail");
                    return(View(forgot));
                }
            }

            return(RedirectToAction("Index", "Home"));
        }
Example #6
0
        public ActionResult Register(RegisterViewModel registerViewModel)
        {
            if (ModelState.IsValid && registerViewModel.validate(ModelState))
            {
                var db = new photogEntities();

                var veriKey = (new Backbone()).Random(8);

                User user = new User {
                    email = registerViewModel.Email.Trim().ToLower(), password = registerViewModel.Password, isVerified = false, verifiedKey = veriKey, name = registerViewModel.Email
                };
                user.UserSystemRoles.Add(new UserSystemRole {
                    systemroleid = 2
                });

                db.Users.Add(user);
                db.SaveChanges();

                string url          = string.Format("https://{0}/Account/Validate?key={1}", Request.Url.Authority, veriKey);
                string emailContent = String.Format("Click Here to verify Account : {0}", url);

                var client = new SmtpClient("smtp.titan.email", 587)
                {
                    Credentials = new NetworkCredential("*****@*****.**", "RareMaHZUU")
                };
                client.Send("*****@*****.**", user.email, "Verify your Account", emailContent);

                ViewBag.Email = registerViewModel.Email;
                return(View("ValidateEmail"));
            }
            return(View(registerViewModel));
        }
Example #7
0
        public IHttpActionResult loadSearchPackageImg(int id)
        {
            photogEntities db     = new photogEntities();
            var            model  = db.PackageImages.Where(x => x.PackageID == id).ToList();
            var            model2 = db.Studios
                                    .Join(db.Packages, std => std.id, pkg => pkg.studioid, (std, pkg) => new { std, pkg })
                                    .Join(db.PackageImages, ppkg => ppkg.pkg.id, pkgi => pkgi.PackageID, (ppkg, pkgi) => new { ppkg, pkgi })
                                    .Where(x => x.pkgi.PackageID == id).ToList();

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model2)
            {
                data.Add(new
                {
                    item.ppkg.std.id,
                    item.ppkg.std.name,
                    item.ppkg.std.shortDesc,
                    item.pkgi.ID,
                    item.pkgi.ImageName,
                    item.pkgi.PackageID
                });
            }

            return(Ok(data));
        }
Example #8
0
        public CreatePackageViewModel()
        {
            photogEntities db = new photogEntities();

            studio = db.Studios.ToList().Where(x => x.UserStudios.Any(y => y.userid == UserAuthentication.Identity().id)).ToList().
                     Select(x => new SelectListItem {
                Text = x.name, Value = x.id.ToString()
            });
        }
Example #9
0
        public ActionResult Index()
        {
            photogEntities db     = new photogEntities();
            var            userid = UserAuthentication.Identity().id;

            var model = db.UserStudios.Where(x => x.userid == userid).OrderBy(x => x.Studio.name).ToList();

            return(PartialView("~/Views/Shared/_LayoutStudioList.cshtml", model));
        }
Example #10
0
        public IHttpActionResult GetPackageDetails(int id)
        {
            photogEntities db     = new photogEntities();
            var            charge = db.Packages.FirstOrDefault(x => x.id == id);

            return(Ok(new Package {
                id = charge.id, depositprice = charge.depositprice, details = charge.details, name = charge.name, price = charge.price, status = charge.status
            }));
        }
Example #11
0
        public ActionResult ChangeStudioUsername(Studio studio)
        {
            var regexItem = new Regex("^[a-zA-Z0-9]*$");

            ViewBag.IsStudioSetting = "2";

            photogEntities db       = new photogEntities();
            var            username = studio.uniquename?.Trim();

            studio            = db.Studios.FirstOrDefault(x => x.id == studio.id);
            studio.uniquename = username;
            var notAllowed = new string[] { "api", "systemapi", "database", "chat", "account", "studio", "payment", "package", "job", "jobc", "jobstatus", "home", "index", "hangfire" };

            if (string.IsNullOrWhiteSpace(username))
            {
                ModelState.AddModelError("uniquename", "Studio Username cannot be null");
            }
            else if (notAllowed.FirstOrDefault(x => x.ToLower() == username.ToLower()) != null)
            {
                ModelState.AddModelError("uniquename", "Entered username is not allowed");
            }

            else if (!regexItem.IsMatch(username))
            {
                ModelState.AddModelError("uniquename", "Studio Username cannot contain characters and spaces");
            }

            else if (username.Length > 20)
            {
                ModelState.AddModelError("uniquename", "Studio Username cannot be more than 20 words");
            }

            else
            {
                var checkUsername = db.Studios.FirstOrDefault(x => x.uniquename.ToLower() == username.ToLower() && x.id != studio.id);

                if (checkUsername != null)
                {
                    ModelState.AddModelError("uniquename", "Studio Username is already taken by other studio");
                }
            }

            if (ModelState.IsValid)
            {
                db.SaveChanges();

                TempData["Changes"] = "Studio Username have been changed successfully";
                return(Redirect(string.Format("/{0}/{1}", username, "Settings")));
            }

            return(View(studio));
        }
Example #12
0
        public IHttpActionResult deletePackageCharges(int id)
        {
            photogEntities db    = new photogEntities();
            var            model = db.Charges.FirstOrDefault(x => x.id == id);

            if (model != null)
            {
                db.Charges.Remove(model);
                db.SaveChanges();
                return(Ok());
            }

            return(BadRequest());
        }
Example #13
0
        public static User Identity()
        {
            var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;

            var userData = identity.Claims.FirstOrDefault(x => x.Type == "UserDataJson");

            if (userData != null)
            {
                var            userJson = JsonConvert.DeserializeObject <User>(userData.Value);
                photogEntities db       = new photogEntities();
                return(db.Users.FirstOrDefault(X => X.id == userJson.id));
            }

            return(null);
        }
Example #14
0
        public IHttpActionResult UploadProfilePic()
        {
            var            file   = HttpContext.Current.Request.Files.Count > 0 ? HttpContext.Current.Request.Files[0] : null;
            photogEntities db     = new photogEntities();
            var            studio = db.Studios.FirstOrDefault(x => x.id == StudioID);

            if (file != null && file.ContentLength > 0)
            {
                AzureBlob BlobManagerObj = new AzureBlob(4);
                string    FileName       = BlobManagerObj.UploadFileAPI(file, null);
                FileName = FileName.Substring(FileName.IndexOf('/') + 1);
                return(Ok(FileName));
            }
            return(BadRequest());
        }
Example #15
0
        public IHttpActionResult loadCharges(int id)
        {
            photogEntities db    = new photogEntities();
            var            model = db.Charges.Where(x => x.StudioID == id).ToList();

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    item.id,
                    item.Name,
                });
            }
            return(Ok(data));
        }
Example #16
0
        public ActionResult Validate(string key)
        {
            var db = new photogEntities();

            var checkItem = db.Users.FirstOrDefault(x => x.verifiedKey.ToLower() == key.ToLower());

            if (checkItem == null)
            {
                return(new HttpUnauthorizedResult("Invalid Link"));
            }
            else if (checkItem.isVerified && checkItem.isForgotPassword)
            {
                checkItem.isForgotPassword      = false;
                checkItem.emailTemp             = null;
                checkItem.verifiedKey           = null;
                TempData["ForgotPasswordEmail"] = checkItem.email;
                return(RedirectToAction("ResetPassword", "Account"));
            }
            else if (checkItem.isVerified && string.IsNullOrWhiteSpace(checkItem.emailTemp))
            {
                return(new HttpUnauthorizedResult("Expired Link"));
            }
            if (!string.IsNullOrWhiteSpace(checkItem.emailTemp))
            {
                var check = db.Users.FirstOrDefault(x => x.email.ToLower() == checkItem.emailTemp.ToLower());

                if (check != null)
                {
                    return(new HttpUnauthorizedResult("Expired Link"));
                }

                checkItem.email     = checkItem.emailTemp;
                checkItem.emailTemp = null;
            }

            else
            {
                checkItem.isVerified = true;
            }

            checkItem.verifiedKey = null;
            db.SaveChanges();

            TempData["isVerified"] = "1";
            return(RedirectToAction("SignIn", "Account"));
        }
Example #17
0
        public IHttpActionResult loadJobStatus()
        {
            photogEntities db    = new photogEntities();
            var            model = db.JobStatus.ToList().Where(x => x.id != 6);

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    item.id,
                    item.name,
                });
            }
            return(Ok(data));
        }
Example #18
0
        private static ClaimsIdentity Identity(User user)
        {
            var identity       = Thread.CurrentPrincipal.Identity as ClaimsIdentity;
            var userDataJson   = identity.FindFirst("UserDataJson");
            var userName       = identity.FindFirst(ClaimTypes.Name);
            var userEmail      = identity.FindFirst(ClaimTypes.Email);
            var userProfilePic = identity.FindFirst("ProfilePicUrl");
            var roles          = identity.FindFirst("Roles");

            if (userDataJson != null)
            {
                photogEntities db = new photogEntities();
                user = JsonConvert.DeserializeObject <User>(userDataJson.Value);
                user = db.Users.FirstOrDefault(x => x.id == user.id);

                identity.RemoveClaim(userDataJson);
                identity.RemoveClaim(userName);
                identity.RemoveClaim(userEmail);
                identity.RemoveClaim(userProfilePic);
                identity.RemoveClaim(roles);
            }

            var userObj = new User {
                id = user.id, email = user.email, name = user.name, dateofbirth = user.dateofbirth, isVerified = user.isVerified, imgprofile = user.imgprofile, phonenumber = user.phonenumber
            };

            var userData = JsonConvert.SerializeObject(userObj, Formatting.None, new JsonSerializerSettings {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            string urlPic = (string.IsNullOrWhiteSpace(user.imgprofile)) ? "https://storagephotog2.blob.core.windows.net/user-data/default/default-profile.jpg" : String.Format("https://storagephotog2.blob.core.windows.net/user-data/{0}/{1}", user.id, user.imgprofile);

            var UserRole = JsonConvert.SerializeObject(user.UserSystemRoles.ToList().Select(x => x.SystemRole.name));

            var claimsIdentity = new ClaimsIdentity(new[]
            {
                new Claim(ClaimTypes.Name, user.name),
                new Claim(ClaimTypes.Email, user.email),
                new Claim(type: "UserDataJson", value: userData),
                new Claim(type: "ProfilePicUrl", value: urlPic),
                new Claim(type: "Roles", value: UserRole)
            }, "ApplicationCookie");

            return(claimsIdentity);
        }
Example #19
0
        public async System.Threading.Tasks.Task <IHttpActionResult> cancelJob(int id)
        {
            photogEntities db        = new photogEntities();
            var            job       = db.Jobs.FirstOrDefault(x => x.id == id);
            var            chatkey   = job.Package.Studio.ChatKeys.FirstOrDefault(x => x.UserID == job.userid).ChatKeyID;
            var            packageId = job.Package.id;

            if (job != null)
            {
                foreach (var item in job.Invoices.ToList())
                {
                    db.Invoices.Remove(item);
                }
                foreach (var item in job.JobCharges.ToList())
                {
                    db.JobCharges.Remove(item);
                }
                foreach (var item in job.JobDates.ToList())
                {
                    db.JobDates.Remove(item);
                }

                db.Jobs.Remove(job);
                db.SaveChanges();

                FirestoreDb firestore = FirestoreDb.Create("photogw2");

                var collection = firestore.Collection("Quotation");
                var query      = collection.WhereEqualTo("ChatKey", chatkey);
                var snapshot   = await query.GetSnapshotAsync();

                var deserializedDataQuoteAll = snapshot.FirstOrDefault().ConvertTo <QuotationModel>();
                var chat = db.ChatKeys.FirstOrDefault(x => x.ChatKeyID == deserializedDataQuoteAll.ChatKey);
                var deserializedDataSel = deserializedDataQuoteAll.Packages.FirstOrDefault(x => x.Package.Id == packageId);
                deserializedDataQuoteAll.Packages.Remove(deserializedDataSel);

                await collection.Document(snapshot.FirstOrDefault().Id).SetAsync(deserializedDataQuoteAll);

                return(Ok());
            }
            else
            {
                return(BadRequest());
            }
        }
Example #20
0
        public IHttpActionResult loadJobCharges(int id)
        {
            photogEntities db    = new photogEntities();
            var            model = db.JobCharges.Where(x => x.jobid == id).ToList();

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    item.id,
                    amount = "RM" + item.amount.ToString(".00"),
                    item.remarks
                });
            }
            return(Ok(data));
        }
Example #21
0
        public IHttpActionResult loadJobDate(int id)
        {
            photogEntities db    = new photogEntities();
            var            model = db.JobDates.Where(x => x.jobid == id).ToList();

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    pdatetime = item.jobdate1.ToString("dd/MM/yyyy hh:mm tt"),
                    item.location,
                    item.description,
                    item.id
                });
            }
            return(Ok(data));
        }
Example #22
0
        public ActionResult Index()
        {
            photogEntities  db  = new photogEntities();
            SearchViewModel src = new SearchViewModel();

            src.pkg = db.Packages.ToList().OrderBy(x => Guid.NewGuid()).ToList();

            if (User.Identity.IsAuthenticated)
            {
                if (User.IsInRole("Admin"))
                {
                    return(RedirectToAction("Index", "Database"));
                }
            }

            ViewBag.Title = "Home Page";

            return(View(src));
        }
Example #23
0
        public IHttpActionResult loadJobStaff(int id)
        {
            photogEntities db    = new photogEntities();
            var            model = db.JobDateUsers.Where(x => x.JobDate.jobid == id).ToList();

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    item.UserStudio.User.name,
                    item.UserStudio.User.email,
                    phone = item.UserStudio.User.phonenumber,
                    item.id
                });
            }
            return(Ok(data));
        }
Example #24
0
        public ActionResult Search(SearchViewModel srcres)
        {
            photogEntities db = new photogEntities();

            var a = db.Packages.ToList();
            var b = db.Studios.ToList();

            if (srcres.keyword != null)
            {
                a = a.Where(x => x.name.ToLower().Contains(srcres.keyword.ToLower())).ToList();
                b = b.Where(x => x.name.ToLower().Contains(srcres.keyword.ToLower())).ToList();
            }

            if (srcres.sortby != null)
            {
                if (srcres.sortby == "pricelh")
                {
                    a = a.OrderBy(x => x.price).ToList();
                }
                else if (srcres.sortby == "pricehl")
                {
                    a = a.OrderByDescending(x => x.price).ToList();
                }
            }

            if (srcres.minprice != null)
            {
                a = a.Where(z => z.price >= decimal.Parse(srcres.minprice)).ToList();
            }

            if (srcres.maxprice != null)
            {
                a = a.Where(z => z.price <= decimal.Parse(srcres.maxprice)).ToList();
            }

            srcres.pkg = a;
            srcres.std = b;

            return(View(srcres));
        }
Example #25
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            photogEntities db = new photogEntities();

            var permalink   = (string)filterContext.RouteData.Values["permalink"];
            var checkStudio = db.Studios.FirstOrDefault(x => x.uniquename.ToLower() == permalink.ToLower());

            if (checkStudio == null)
            {
                filterContext.Result = new HttpNotFoundResult();
                return;
            }

            var UserStudio = UserAuthentication.Identity()?.UserStudios.FirstOrDefault(x => x.studioid == checkStudio.id);

            if (RoleID != 0)
            {
                if (UserStudio == null)
                {
                    filterContext.Result = new HttpUnauthorizedResult();
                    return;
                }

                if (RoleID == 1 && UserStudio.studioroleid != RoleID)
                {
                    filterContext.Result = new HttpUnauthorizedResult();
                    return;
                }
            }

            if (UserStudio != null)
            {
                filterContext.Controller.ViewBag.StudioRoleID = UserStudio.studioroleid;
            }
            filterContext.Controller.ViewBag.StudioID   = checkStudio.id;
            filterContext.Controller.ViewBag.StudioUrl  = checkStudio.uniquename;
            filterContext.Controller.ViewBag.StudioName = checkStudio.name;
        }
Example #26
0
        public IHttpActionResult loadInvoices(int id)
        {
            photogEntities db    = new photogEntities();
            var            model = db.Invoices.Where(x => x.jobid == id).ToList();

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    item.id,
                    invdate    = item.invdate.ToString("dd/MM/yyyy"),
                    expirydate = item.expirydate.ToString("dd/MM/yyyy"),
                    item.total,
                    item.totalunpaid,
                    item.detail,
                    item.status
                });
            }
            return(Ok(data));
        }
Example #27
0
        public IHttpActionResult loadPackages(int id)
        {
            photogEntities db    = new photogEntities();
            var            model = db.Packages.Where(x => x.studioid == id).ToList();

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    item.id,
                    item.name,
                    price        = item.price.ToString(".00"),
                    studioname   = item.Studio.name,
                    depositprice = item.depositprice.ToString(".00"),
                    item.details,
                    item.status
                });
            }
            return(Ok(data));
        }
Example #28
0
        public IHttpActionResult loadJobAdmin(int id, int Status)
        {
            photogEntities db    = new photogEntities();
            var            model = db.Jobs.Where(x => x.Package.studioid == id).ToList().Where(x => x.jobstatusid == Status);

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    item.id,
                    DateCreated   = item.DateCreated.ToString("dd/MM/yyyy hh:mm"),
                    client        = item.User.name,
                    package       = item.Package.name,
                    status        = item.JobStatu.name,
                    paymentstatus = item.Invoices.Any() ? item.Invoices.OrderByDescending(x => x.id).FirstOrDefault(x => x.jobid == item.id).status : "-",
                    paymentdetail = item.Invoices.Any() ? item.Invoices.OrderByDescending(x => x.id).FirstOrDefault(x => x.jobid == item.id).detail : "-"
                });
            }
            return(Ok(data));
        }
Example #29
0
        public IHttpActionResult UploadProfilePic()
        {
            var file = HttpContext.Current.Request.Files.Count > 0 ? HttpContext.Current.Request.Files[0] : null;

            if (file != null && file.ContentLength > 0)
            {
                string    fl             = file.FileName;
                AzureBlob BlobManagerObj = new AzureBlob(1);
                string    FileName       = BlobManagerObj.UploadFileAPI(file, UserAuthentication.Identity().id.ToString());
                FileName = FileName.Substring(FileName.IndexOf('/') + 1);

                photogEntities db   = new photogEntities();
                var            id   = UserAuthentication.Identity().id;
                var            user = db.Users.FirstOrDefault(x => x.id == id);
                user.imgprofile = FileName;
                db.SaveChanges();

                UserAuthentication.UpdateClaim();

                return(Ok(FileName));
            }
            return(BadRequest());
        }
Example #30
0
        public IHttpActionResult loadJobStaffMain(int id)
        {
            photogEntities db    = new photogEntities();
            var            aid   = UserAuthentication.Identity().id;
            var            model = db.JobDateUsers.Where(x => x.UserStudio.userid == aid && x.UserStudio.studioid == id).ToList();

            List <dynamic> data = new List <dynamic>();

            foreach (var item in model)
            {
                data.Add(new
                {
                    item.JobDate.Job.id,
                    DateCreated   = item.JobDate.Job.DateCreated.ToString("dd/MM/yyyy hh:mm"),
                    client        = item.JobDate.Job.User.name,
                    package       = item.JobDate.Job.Package.name,
                    status        = item.JobDate.Job.JobStatu.name,
                    paymentstatus = item.JobDate.Job.Invoices.Any() ? item.JobDate.Job.Invoices.OrderByDescending(x => x.id).FirstOrDefault(x => x.jobid == item.JobDate.jobid).status : "-",
                    paymentdetail = item.JobDate.Job.Invoices.Any() ? item.JobDate.Job.Invoices.OrderByDescending(x => x.id).FirstOrDefault(x => x.jobid == item.JobDate.jobid).detail : "-"
                });
            }
            return(Ok(data));
        }