public async Task <IHttpActionResult> AddPosition([FromBody] dynamic data) { Code status = default(Code); dynamic response = null; var dbObj = new Position() { Name = data.name, Description = data.description, IsDeleted = false, CreationDate = DateTimeOffset.UtcNow.DateTime }; store.Positions.Add(dbObj); store.SaveChanges(); response = store .Positions .Where(c => c.PositionID == dbObj.PositionID) .Select(c => new { id = c.PositionID, name = c.Name, description = c.Description, }) .FirstOrDefault(); return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> UpdateAccount([FromBody] dynamic data) { Code status = default(Code); dynamic response = null; int?userID = UserSessionState.UserID(data.token); if (userID.HasValue) { int id = (int)data.id; var account = store .Users .FirstOrDefault(u => u.UserID == id); if (account != null) { account.Email = data.email; account.UserTypeID = data.typeid; store.SaveChanges(); } else { status = Code.NotFound; } } else { status = Code.AuthRequired; } return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> SetAuditMessageReaded([FromBody] MultiDBAction data) { Code status = default(Code); int? userID = UserSessionState.UserID(data.token); if (userID.HasValue) { foreach (var id in data.ids) { var audit = store .Audits .FirstOrDefault(a => a.AuditID == id); if (audit != null) { audit.Readed = true; store.SaveChanges(); } else { status = Code.NotFound; } } } else { status = Code.AuthRequired; } return(Ok(ApiResponseManager.CreateResponse(new Status(status)))); }
public async Task <IHttpActionResult> ToolsInUse([FromBody] ToolsInCategoryModel data) { Code status = default(Code); dynamic response = null; var objs = store .Get_UsersUsedTool(data.id) .Select(g => new { tool = new { id = g.ToolID, name = g.Name }, worker = new { id = g.WorkerID, lastname = g.LastName, firstname = g.FirstName, middlename = g.MiddleName }, count = g.Count }) .ToList <object>(); response = objs; return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> DeleteAccount([FromBody] SimpleDeleteModel data) { Code status = default(Code); int? userId = UserSessionState.UserID(Convert.ToString(data.token)); int? response = null; if (userId != null) { var account = store .Users .FirstOrDefault(u => u.UserID == data.id); if (account != null) { account.IsDeleted = true; store.SaveChanges(); response = data.id; } else { status = Code.NotFound; } } else { status = Code.AuthRequired; } return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
/// <summary> /// The on exception. /// </summary> /// <param name="context"> /// The <c>context</c>. /// </param> public override void OnActionExecuting(HttpActionContext context) { if (context.ActionArguments != null && context.Request.Method != HttpMethod.Get && !context.Request.Content.IsMimeMultipartContent()) { if (context.ActionArguments.Any(p => p.Value == null)) { context.Response = context.Request.CreateResponse( HttpStatusCode.OK, ApiResponseManager.CreateResponse(new Status(Code.BadRequest))); } else { var models = context.ActionArguments.Where(p => p.Value.GetType().IsClass).Select(p => p.Value).ToList(); foreach (var item in models) { var status = Validator.Validate(item); if (status != default(Code)) { context.Response = context.Request.CreateResponse( HttpStatusCode.OK, ApiResponseManager.CreateResponse(new Status(status))); break; } } } } base.OnActionExecuting(context); }
public async Task <IHttpActionResult> IncIssueTool([FromBody] IncIssueModel data) { Code status = default(Code); dynamic response = null; int? userID = UserSessionState.UserID(data.token); if (userID.HasValue) { store.ToolsUses.Add(new ToolsUs() { ToolID = data.id, WorkerID = data.workerid, ManageWorkerID = store.Users.FirstOrDefault(u => u.WorkerID == userID.Value).WorkerID, Count = data.count * (data.isinc ? 1 : -1), CreationDate = DateTimeOffset.UtcNow.DateTime }); store.Audits.Add(new Audit() { Action = (int)(data.isinc ? ToolAction.Take : ToolAction.Issue), Count = data.count, Readed = false, ToolID = data.id, WorkerID = store.Users.FirstOrDefault(u => u.WorkerID == userID).WorkerID, CreationDate = DateTimeOffset.UtcNow.DateTime, }); store.SaveChanges(); response = Math.Abs(ToolsHelper.ToolStatByToolID(store, data.id)); } else { status = Code.AuthRequired; } return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> AddCategory([FromBody] dynamic data) { Code status = default(Code); dynamic response = null; var dbObj = new Category() { Name = data.name, Description = data.description, CellFrom = data.cellfrom, CellTo = data.cellto, IsDeleted = false, CreationDate = DateTimeOffset.UtcNow.DateTime }; store.Categories.Add(dbObj); store.SaveChanges(); response = store .Categories .Where(c => c.CategoryID == dbObj.CategoryID) .Select(c => new { id = c.CategoryID, name = c.Name, description = c.Description, toolpositions = 0, toolscount = 0, cellfrom = c.CellFrom, cellto = c.CellTo }) .FirstOrDefault(); return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public override void OnActionExecuting(HttpActionContext actionContext) { var controller = actionContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower(); if (controller != "tokenapi" /* || (controller.CompareTo("tokenapi") == 0 && actionContext.ActionDescriptor.ActionName.ToLower() != "validateuser")*/) { var status = default(Code); try { if (actionContext.ActionArguments != null && actionContext.Request.Method != HttpMethod.Get) { if (actionContext.Request.Content.IsMimeMultipartContent()) { var token = System.Web.HttpContext.Current.Request["token"]; if (!UserSessionState.TokenIsValid(token)) { status = Code.AuthRequired; throw new Exception(); } } else if (actionContext.ActionArguments.Any(p => p.Value == null)) { status = Code.BadRequest; throw new Exception(); } else { var model = actionContext.ActionArguments.Where(p => p.Value.GetType().IsClass).Select(p => p.Value).FirstOrDefault(); object token = null; if (model is TokenBase) { token = (model as TokenBase).token; } else if (model is Newtonsoft.Json.Linq.JObject) { token = (model as Newtonsoft.Json.Linq.JObject).Value <object>("token"); } if (!UserSessionState.TokenIsValid(token)) { status = Code.AuthRequired; throw new Exception(); } } } } catch { actionContext.Response = actionContext.Request.CreateResponse( HttpStatusCode.OK, ApiResponseManager.CreateResponse(new Status(status))); } } base.OnActionExecuting(actionContext); }
public async Task <IHttpActionResult> UpdateTool([FromBody] UpdateToolModel data) { Code status = default(Code); dynamic response = null; var dbObj = store .Tools .Where(t => t.ToolID == data.id) .FirstOrDefault(); int userID = UserSessionState.UserID(data.token).Value; if (dbObj != null) { dbObj.Name = data.name; dbObj.Cell = data.cell; dbObj.Count += data.count; if (data.count > 0) { store.Audits.Add(new Audit() { Action = (int)ToolAction.Add, Count = data.count, Readed = false, ToolID = dbObj.ToolID, WorkerID = store.Users.FirstOrDefault(u => u.WorkerID == userID).WorkerID, CreationDate = DateTimeOffset.UtcNow.DateTime, }); } if (data.low.HasValue) { dbObj.LowCount = data.low.Value; } if (data.lower.HasValue) { dbObj.LowerCount = data.lower.Value; } store.SaveChanges(); response = new { id = dbObj.ToolID, name = dbObj.Name, cell = dbObj.Cell, low = dbObj.LowCount, lower = dbObj.LowerCount, toolscount = dbObj.Count, toolsinuse = Math.Abs(ToolsHelper.ToolStatByToolID(store, dbObj.ToolID)), }; } else { status = Code.NotFound; } return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <HttpResponseMessage> UserLogoff([FromBody] TokenBase tokenObj) { var status = default(Code); string token = Convert.ToString(tokenObj.token); var uSession = store .UserSessions .FirstOrDefault(us => us.Token.CompareTo(token) == 0); if (uSession != null) { store.UserSessions.Remove(uSession); store.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.OK, ApiResponseManager.CreateResponse(new Status(status)))); }
public async Task <IHttpActionResult> UpdatePosition([FromBody] UpdateCategoryModel data) { Code status = default(Code); var position = store .Positions .Where(c => c.PositionID == data.id) .FirstOrDefault(); if (position != null) { position.Name = data.name; position.Description = data.description; } store.SaveChanges(); return(Ok(ApiResponseManager.CreateResponse(new Status(status)))); }
public async Task <HttpResponseMessage> PasswordRecovery([FromBody] RecoveryPasswordModel user) { var status = default(Code); var dbuser = store.Users.FirstOrDefault(u => u.Email.ToLower().CompareTo(user.email.ToLower()) == 0); dynamic response = null; if (dbuser != null) { if (dbuser.IsDeleted == null || (dbuser.IsDeleted != null && !dbuser.IsDeleted.Value)) { int passLength = 6; if (!int.TryParse(ConfigurationManager.AppSettings["newPassLength"], out passLength)) { passLength = 6; } string password = PasswordGenerator.GetPassword(passLength); dbuser.Password = PasswordGenerator.GetPasswordSHA1(password, dbuser.Salt); store.SaveChanges(); /*MailAddress to = new MailAddress(dbuser.Email); * MailMessage message = new MailMessage(); * message.To.Add(to); * message.Subject = message.Subject = System.Configuration.ConfigurationManager.AppSettings["resetPass_EmailSubject"]; * string str = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/Email/PasswordRecovery.html")); * message.Body = String.Format(str, dbuser.FirstName, dbuser.LastName, "http://" + user.host, dbuser.UserName, password); * message.IsBodyHtml = true; * SmtpClient client = new SmtpClient(); * try * { * client.Send(message); * } * catch (Exception exc) * { * status = Code.EmailSendFailed; * }*/ } else { status = Code.UserHasDeleted; } } else { status = Code.UserWithEmailNotFound; } return(Request.CreateResponse(HttpStatusCode.OK, ApiResponseManager.CreateResponse(new Status(status), (object)response))); }
public async Task <IHttpActionResult> AddTool(dynamic data) { data = Newtonsoft.Json.JsonConvert.DeserializeObject <ExpandoObject>(Convert.ToString(data), new ExpandoObjectConverter()); int userID = UserSessionState.UserID(data.token); Code status = default(Code); dynamic response = null; var dbObj = new Tool() { Name = data.name, CategoryID = Convert.ToInt32(data.category), Cell = Convert.ToInt32(data.cell), Count = Convert.ToInt32(data.count), IsDeleted = false, CreationDate = DateTimeOffset.UtcNow.DateTime }; if (ExpandoHelper.PropertyExists(data, "low")) { dbObj.LowCount = Convert.ToInt32(data.low); } if (ExpandoHelper.PropertyExists(data, "lower")) { dbObj.LowerCount = Convert.ToInt32(data.lower); } store.Tools.Add(dbObj); store.Audits.Add(new Audit() { Action = (int)ToolAction.Add, Count = dbObj.Count, Readed = false, ToolID = dbObj.ToolID, WorkerID = store.Users.FirstOrDefault(u => u.WorkerID == userID).WorkerID, CreationDate = DateTimeOffset.UtcNow.DateTime, }); store.SaveChanges(); response = new { id = dbObj.ToolID, name = dbObj.Name, cell = dbObj.Cell, low = dbObj.LowCount, lower = dbObj.LowerCount, toolscount = dbObj.Count, toolsinuse = 0, }; return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public override void OnActionExecuting(HttpActionContext actionContext) { if (actionContext.ActionArguments.ContainsKey(this.Parameter) && actionContext.Request.Method == HttpMethod.Get) { var filter = actionContext.ActionDescriptor.GetCustomAttributes <HttpGetTypeAttribute>(true).FirstOrDefault(); if (filter != null) { var qs = HttpUtility.ParseQueryString(actionContext.Request.RequestUri.Query); if (qs.HasKeys()) { var data = JsonConvert.DeserializeObject(qs[this.Parameter], filter.RequestObjectType); var status = Validator.Validate(data); try { if (status != default(Code)) { throw new Exception(); } if (data is TokenBase) { if (!UserSessionState.TokenIsValid((data as TokenBase).token)) { status = Code.AuthRequired; throw new Exception(); } } else { status = Code.BadRequest; throw new Exception(); } actionContext.ActionArguments[Parameter] = data; } catch { actionContext.Response = actionContext.Request.CreateResponse( HttpStatusCode.OK, ApiResponseManager.CreateResponse(new Status(status))); } } } } base.OnActionExecuting(actionContext); }
public async Task <IHttpActionResult> UpdateWorker([FromBody] UpdateWorkerModel data) { Code status = default(Code); var worker = store .Workers .Where(c => c.WorkerID == data.id) .FirstOrDefault(); if (worker != null) { worker.FirstName = data.firstname; worker.LastName = data.lastname; worker.MiddleName = data.middlename; worker.PositionID = data.positionid; } store.SaveChanges(); return(Ok(ApiResponseManager.CreateResponse(new Status(status)))); }
public async Task <IHttpActionResult> UpdateCategory([FromBody] UpdateCategoryModel data) { Code status = default(Code); var category = store .Categories .Where(c => c.CategoryID == data.id) .FirstOrDefault(); if (category != null) { category.Name = data.name; category.Description = data.description; category.CellFrom = data.cellfrom; category.CellTo = data.cellto; } store.SaveChanges(); return(Ok(ApiResponseManager.CreateResponse(new Status(status)))); }
public async Task <IHttpActionResult> DeleteCategory([FromBody] SimpleDeleteModel data) { Code status = default(Code); var category = store .Categories .Where(c => c.CategoryID == data.id).FirstOrDefault(); if (category != null) { category.IsDeleted = true; store.SaveChanges(); } else { status = Code.NotFound; } return(Ok(ApiResponseManager.CreateResponse(new Status(status)))); }
public virtual async Task <IHttpActionResult> GetSummary(dynamic data) { Code status = default(Code); dynamic response = null; var allTools = store .Tools .Where(t => !t.IsDeleted.HasValue || (t.IsDeleted.HasValue && !t.IsDeleted.Value) && !t.Category.IsDeleted) .Select(t => t.Count) .ToList(); response = new { all = allTools.Count > 0 ? allTools.Sum() : 0, inuse = System.Math.Abs(ToolsHelper.ToolStat(store)), }; return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> GetUserTypes([FromBody] dynamic data) { Code status = default(Code); dynamic response = null; int?userID = UserSessionState.UserID(data.token); if (userID.HasValue) { response = store .UserTypes .Select(ut => new { id = ut.UserTypeID, name = ut.Name }); } else { status = Code.AuthRequired; } return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> DeleteTool([FromBody] SimpleDeleteModel data) { Code status = default(Code); int? userId = UserSessionState.UserID(Convert.ToString(data.token)); int? response = null; if (userId != null) { var c = ToolsHelper.ToolStatByToolID(store, data.id); if (c <= 0) { var tool = store .Tools .FirstOrDefault(t => t.ToolID == data.id); tool.IsDeleted = true; store .DeletedTools .Add(new DeletedTool() { ToolID = data.id, WorkerID = store.Users.FirstOrDefault(u => u.WorkerID == userId.Value).WorkerID, DeletedDate = DateTimeOffset.UtcNow.DateTime }); store.SaveChanges(); response = data.id; } else { status = Code.ToolIsInUse; } } else { status = Code.AuthRequired; } return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <HttpResponseMessage> ValidateUser([FromBody] LoginUserModel user) { var status = default(Code); string token = null; var dbuser = store .Users .FirstOrDefault(u => u.UserName.ToLower().CompareTo(user.username.ToLower()) == 0); dynamic response = null; if (dbuser != null) { if (dbuser.IsDeleted == null || (dbuser.IsDeleted != null && !dbuser.IsDeleted.Value)) { if (dbuser.Password.ToUpper().CompareTo(PasswordGenerator.GetPasswordSHA1(Convert.ToString(user.password), dbuser.Salt)) == 0) { token = UserSessionState.AddNew(dbuser.WorkerID, user.rememberme); response = new ExpandoObject(); response.rememberme = user.rememberme; response.username = dbuser.UserName; response.privilege = dbuser.UserType.AccessLevel; } else { status = Code.LoginFailed; } } else { status = Code.UserHasDeleted; } } else { status = Code.LoginFailed; } return(Request.CreateResponse(HttpStatusCode.OK, ApiResponseManager.CreateResponse(new Status(status), (object)response, (!string.IsNullOrWhiteSpace(token) ? token : null)))); }
public async Task <IHttpActionResult> AddWorker([FromBody] dynamic data) { Code status = default(Code); dynamic response = null; var dbObj = new Worker() { FirstName = data.firstname, LastName = data.lastname, MiddleName = data.middlename, PositionID = data.positionid, IsDeleted = false, CreationDate = DateTimeOffset.UtcNow.DateTime }; store.Workers.Add(dbObj); store.SaveChanges(); var position = store .Workers .Where(w => w.WorkerID == dbObj.WorkerID) .Select(w => w.Position) .FirstOrDefault(); response = new { id = dbObj.WorkerID, lastname = dbObj.LastName, firstname = dbObj.FirstName, middlename = dbObj.MiddleName, position = new { id = position.PositionID, name = position.Name }, toolscount = Math.Abs(ToolsHelper.ToolStatByWorkerID(store, dbObj.WorkerID)) }; return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> ChangePassword([FromBody] ChangePasswordModel data) { var status = default(Code); var response = false; int?userID = UserSessionState.UserID(data.token); if (userID.HasValue) { var dbuser = store .Users .Where(u => u.WorkerID.CompareTo(userID.Value) == 0 && (!u.IsDeleted.HasValue || (u.IsDeleted.HasValue && !u.IsDeleted.Value))) .FirstOrDefault(); if (dbuser != null) { if (dbuser.Password.ToUpper().CompareTo(PasswordGenerator.GetPasswordSHA1(Convert.ToString(data.oldpass), dbuser.Salt)) != 0) { status = Code.OldPassIncorrect; } else { dbuser.Password = PasswordGenerator.GetPasswordSHA1(data.newpass, dbuser.Salt); store.SaveChanges(); response = true; } } else { status = Code.NotFound; } } else { status = Code.AuthRequired; } return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public virtual async Task <IHttpActionResult> GetPartialData(dynamic data) { var response = GetSortableAndGroupedData(data); return(Ok(ApiResponseManager.CreateResponse(new Status(response != null ? Code.Success : Code.AuthRequired), response))); }
public virtual async Task <IHttpActionResult> GetAllDataRequest(dynamic data) { dynamic response = GetAllData(data); return(Ok(ApiResponseManager.CreateResponse(new Status(), new { count = response.Count, data = response }))); }
public async Task <IHttpActionResult> WriteOffTool([FromBody] WriteOffModel data) { Code status = default(Code); dynamic response = null; if (data.count > 0) { int?userID = UserSessionState.UserID(data.token); if (userID.HasValue) { var allTools = store .Tools .Where(t => (!t.IsDeleted.HasValue || (t.IsDeleted.HasValue && !t.IsDeleted.Value)) && !t.Category.IsDeleted && t.ToolID == data.id) .Select(t => t.Count) .ToList(); var all = allTools.Count > 0 ? allTools.Sum() : 0; int inuseCount = Math.Abs(ToolsHelper.ToolStatByToolID(store, data.id)); if (data.count <= all - inuseCount) { store .WriteOffTools .Add(new WriteOffTool() { ToolID = data.id, WorkerID = store.Users.FirstOrDefault(u => u.WorkerID == userID.Value).WorkerID, Count = data.count, Comment = data.comment, WriteOffTime = DateTimeOffset.UtcNow.DateTime }); store.Audits.Add(new Audit() { Action = (int)ToolAction.WriteOff, Count = data.count, Readed = false, ToolID = data.id, WorkerID = store.Users.FirstOrDefault(u => u.WorkerID == userID.Value).WorkerID, CreationDate = DateTimeOffset.UtcNow.DateTime, }); var tool = store .Tools .FirstOrDefault(t => t.ToolID == data.id); if (tool != null) { response = tool.Count -= data.count; store.SaveChanges(); } else { status = Code.NotFound; } } else { status = Code.OperationFailed; } } else { status = Code.AuthRequired; } } return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> AddAccount(dynamic data) { data = Newtonsoft.Json.JsonConvert.DeserializeObject <ExpandoObject>(Convert.ToString(data), new ExpandoObjectConverter()); Code status = default(Code); dynamic response = null; string password = PasswordGenerator.GetPassword(8); int salt = new Random().Next(0, int.MaxValue); var dbObj = new User() { UserName = data.username, Salt = salt, Password = PasswordGenerator.GetPasswordSHA1(password, salt), UserTypeID = Convert.ToInt32(data.typeid), WorkerID = Convert.ToInt32(data.workerid), Email = data.email, IsDeleted = false, CreatedDate = DateTimeOffset.UtcNow.DateTime }; store.Users.Add(dbObj); store.SaveChanges(); MailAddress to = new MailAddress(dbObj.Email); MailMessage message = new MailMessage(); message.To.Add(to); message.Subject = "Регистрация"; var wr = store .Users .Where(u => u.UserID == dbObj.UserID) .Select(u => u.Worker) .FirstOrDefault(); message.Body = String.Format(@"<p>Ув., {0} {1}, ваш аккаунт был успешно создан</p> <p>Для вас был создан пароль, который вы можете изменить после первого входа на сайт</p> <p>Ваши учетный данные:</p> Имя пользователя: {2}<br> Пароль: {3}<br> <hr /> <p>Best regards!</p>", wr.FirstName, wr.LastName, dbObj.UserName, password); message.IsBodyHtml = true; SmtpClient client = new SmtpClient(); try { client.Send(message); } catch (Exception exc) { //SLICLog.Error(exc); } response = store .Users .Where(u => (!u.IsDeleted.HasValue || (u.IsDeleted.HasValue && !u.IsDeleted.Value)) && u.UserID == dbObj.UserID) .ToList() .Select(u => { dynamic expando = new ExpandoObject(); expando.id = u.UserID; expando.username = u.UserName; var userType = store.UserTypes.FirstOrDefault(ut => ut.UserTypeID == u.UserTypeID); expando.type = new { id = u.UserTypeID, name = userType.Name }; expando.email = u.Email; var worker = store.Workers.FirstOrDefault(w => w.WorkerID == u.WorkerID); expando.worker = new { id = u.WorkerID, lastname = worker.LastName, firstname = worker.FirstName, middlename = worker.MiddleName }; expando.creationdate = u.CreatedDate.ToString("dd.MM.yyyyTHH:mm"); return(expando); }) .FirstOrDefault(); return(Ok(ApiResponseManager.CreateResponse(new Status(status), response))); }
public async Task <IHttpActionResult> GetToolsInCategory([FromBody] dynamic data) { Code status = default(Code); int id = (int)data.extend.id; var response = store .Tools .Where(t => t.CategoryID == id && (!t.IsDeleted.HasValue || (t.IsDeleted.HasValue && !t.IsDeleted.Value))) .AsEnumerable() .OrderBy(t => t.Name) .Select(t => { dynamic expando = new ExpandoObject(); expando.id = t.ToolID; expando.name = t.Name; expando.cell = t.Cell; expando.low = t.LowCount; expando.lower = t.LowerCount; expando.toolscount = t.Count; expando.toolsinuse = Math.Abs(ToolsHelper.ToolStatByToolID(store, t.ToolID)); return(expando); }) .ToList <object>(); string searchStr = !String.IsNullOrWhiteSpace(data.sort.search) ? data.sort.search.ToLower() : null; if (!string.IsNullOrWhiteSpace(searchStr) && response.Count > 0) { Type myListElementType = response[0].GetType(); if (myListElementType == typeof(ExpandoObject)) { response = response .Where(t => ((IDictionary <string, object>)t) .Values .Where(v => !string.IsNullOrWhiteSpace(Convert.ToString(v)) && Convert.ToString(v).ToLower().Contains(searchStr.ToLower())) .Count() > 0) .ToList(); } else { List <object> searchedList = new List <object>(); foreach (var item in response) { var pis = item.GetType().GetProperties(); bool isInSearch = false; foreach (var pi in pis) { string value = Convert.ToString(pi.GetValue(item, null)); if (!string.IsNullOrWhiteSpace(value) && value.ToLower().Contains(searchStr.ToLower())) { isInSearch = true; break; } } if (isInSearch) { searchedList.Add(item); } } response = searchedList; } } return(Ok(ApiResponseManager.CreateResponse(new Status(status), new { data = response }))); }