public DTO.Messages.Wrapper GetChilds(string id = "") { var Result = new DTO.Messages.Wrapper(); if (string.IsNullOrWhiteSpace(id)) { Result.Messages.Add("Parameter", "ID can't be empty"); } if (Result.Messages.Count > 0) { Result.Status = "Bad Request"; Result.Code = 400; return(Result); } var Query = SubRepo.QueryableCollection.Where(x => x.ParentId == id); if (Query.Count() == 0) { Result.Status = "Not Found"; Result.Code = 404; } else { Result.Data = Query.Select(Sub => new DTO.Projection.SubCategory { Name = Sub.Name, Id = Sub.Id, Parent = Sub.ParentId }); } return(Result); }
public DTO.Messages.Wrapper GetOnSale([FromBody] DTO.Messages.SearchPage Search = null) { var Result = new DTO.Messages.Wrapper(); if (Search == null) { Search = new DTO.Messages.SearchPage(); } else { var Max = (Search.MaxPrice > Search.MinPrice) ? Search.MaxPrice : Search.MinPrice; var Min = (Search.MaxPrice < Search.MinPrice) ? Search.MaxPrice : Search.MinPrice; Search.MaxPrice = Max; Search.MinPrice = Min; } IQueryable <DTO.Databases.Product> Query = null; if (string.IsNullOrWhiteSpace(Search.SearchTerm)) { Query = MongoItems.QueryableCollection; } else { var SearchKey = new DTO.Projection.Search { SearchTerm = Search.SearchTerm, Categories = Search.Categories, SubCategories = Search.SubCategories }; var Cached = RedisItems.GetList(SearchKey); if (Cached == null || Cached.Count() == 0) { Cached = MongoItems.SearchThru(Search); RedisItems.SaveList(Cached, SearchKey); Query = Cached.AsQueryable(); } else { Query = Cached.AsQueryable(); } var Offset = Query.Count() < (Search.Page + 1) * Search.PageLimit ? Query.Count() : (Search.Page + 1) * Search.PageLimit; Offset = (Offset - Search.PageLimit < 0) ? 0 : Offset - Search.PageLimit; var Taken = Query.Count() - Offset; Query = Query.Skip(Offset).Take(Taken); Result.Data = Query; if (Query.Count() == 0) { Result.Code = 404; Result.Status = "Not Found"; } } return(Result); }
protected DTO.Messages.Wrapper AuthorizeResponse(HashSet <string> Roles = null) { var Result = new DTO.Messages.Wrapper(); var Verification = Sekrit.Value.Verify(Authorization); switch (Verification) { case 1: break; case 0: Result.Messages.Add("Authorization", "Token's header not found"); break; case -1: Result.Messages.Add("Expiration", "Token expirated"); break; case -2: Result.Messages.Add("Signature", "Token can't be verified"); break; default: break; } if (Verification == 1) { Token = Sekrit.Value.Decode(Authorization); var Session = TokenRepo.GetOne(Token.jti); if (Session == null) { Result.Messages.Add("Session", "not found"); } } if (Roles != null && Roles.Count > 0) { var Origin = new HashSet <string>(); if (Token != null) { Origin.Add(Token.aud); } Origin.IntersectWith(Roles); if (Origin.Count == 0) { Result.Messages.Add("Role", "failed to meet conditions"); } } if (Result.Messages.Count > 0) { Result.Code = 400; Result.Status = "Bad Request"; } return(Result); }
public DTO.Messages.Wrapper GetAll() { var Result = new DTO.Messages.Wrapper { Data = SubRepo.QueryableCollection.Select(Sub => new DTO.Projection.SubCategory { Name = Sub.Name, Id = Sub.Id, Parent = Sub.ParentId }) }; return(Result); }
public DTO.Messages.Wrapper GetAll() { var Result = new DTO.Messages.Wrapper { Data = CatRepo.QueryableCollection.Select(Cat => new DTO.Projection.Category { Name = Cat.Name, Id = Cat.Id }) }; return(Result); }
public DTO.Messages.Wrapper SignIn([FromBody] DTO.Messages.SigningInUser Login) { var Result = new DTO.Messages.Wrapper(); if (Login == null) { Result.Messages.Add("PostBody", "can't be empty"); } else { if (string.IsNullOrWhiteSpace(Login.Email) || !DTO.Generator.IsEmail(Login.Email)) { Result.Messages.Add("Email", "must be a valid Email address"); } if (string.IsNullOrWhiteSpace(Login.Password) || Login.Password.Length < 12) { Result.Messages.Add("Password", "must be at least 12 characters"); } } DTO.Databases.User User = null; if (Result.Messages.Count == 0) { var Count = UserRepo.QueryableCollection.Where(x => x.Email == Login.Email).Count(); if (Count == 0) { Result.Messages.Add("Account", "Email is not registered"); } User = UserRepo.QueryableCollection.Where(x => x.Email == Login.Email).First(); if (!Configs.Hashing.Compare(Login.Password, User.Id, User.Password)) { Result.Messages.Add("Account", "Password mismatched"); } if (Login.AdminMode && !User.Roles.Contains("Administrator")) { Result.Messages.Add("Roles", "can't enter Admin Mode"); } } if (Result.Messages.Count > 0) { Result.Status = "Bad Request"; Result.Code = 400; } else { Result.Data = OnSignedIn(User, Login.AdminMode); } return(Result); }
public DTO.Messages.Wrapper GetOf(string id) { var Result = new DTO.Messages.Wrapper(); if (string.IsNullOrWhiteSpace(id)) { Result.Messages.Add("Id", "can't be empty"); } if (Result.Messages.Count > 0) { Result.Code = 400; Result.Status = "Bad Request"; return(Result); } var List = Re2po.QueryableCollection .Where(x => x.List.Contains(id)) .SelectMany(x => x.List) .Distinct() .ToList(); List.Remove(id); if (List.Count == 0) { Result.Code = 404; Result.Status = "Not Found"; Result.Data = null; return(Result); } List.Shuffle(); var Conditions = List.Take((List.Count < 5) ? List.Count : 5); var Return = ProductRepo.QueryableCollection .Where(x => Conditions.Contains(x.Id)) .Select(x => new DTO.Projection.Recommendation { Id = x.Id, Name = x.Name, Images = x.Images, Price = x.Price }); Result.Data = Return; return(Result); }
public DTO.Messages.Wrapper Register([FromBody] DTO.Messages.RegisteringUser Registry) { var Result = new DTO.Messages.Wrapper(); if (Registry == null) { Result.Messages.Add("PostBody", "can't be empty"); } else { if (string.IsNullOrWhiteSpace(Registry.Email)) { Result.Messages.Add("Email", "can't be empty"); } else if (!DTO.Generator.IsEmail(Registry.Email)) { Result.Messages.Add("Email", "must be a valid Email"); } if (string.IsNullOrWhiteSpace(Registry.Password) || Registry.Password.Length < 12) { Result.Messages.Add("Password", "can't be less than 12 characters"); } if (string.IsNullOrWhiteSpace(Registry.Fullname)) { Result.Messages.Add("Fullname", "can't be empty"); } if (Registry.Gender < 0 || Registry.Gender > 1) { Result.Messages.Add("Gender", "can't be lower than 0 or higher than 1"); } try { Convert.ToDateTime(Registry.Birthday, new System.Globalization.CultureInfo("en-US")); } catch (FormatException) { Result.Messages.Add("Birthday", "must be formated as 'M/d/YYYY'"); } var Count = UserRepo.QueryableCollection.Where(x => x.Email == Registry.Email).Count(); if (Count > 0) { Result.Messages.Add("Account", "Email is registered"); } } if (Result.Messages.Count > 0) { Result.Status = "Bad Request"; Result.Code = 400; return(Result); } // do registering user here var NewUser = new DTO.Databases.User { Email = Registry.Email, Fullname = Registry.Fullname, Birthday = Registry.Birthday, Gender = Registry.Gender }; NewUser.Password = Configs.Hashing.Hash(Registry.Password, NewUser.Id); UserRepo.Save(NewUser); Result.Data = OnSignedIn(NewUser); return(Result); }