public async Task <Guid?> PutAsync(GroupTask model) { Guid?id = null; var where = new Dictionary <string, object> { { nameof(model.Name), model.Name } }; var param = new ExistWithKeyModel { KeyName = nameof(model.Id), KeyValue = model.Id, FieldName = nameof(model.Name), FieldValue = model.Name, WhereData = where }; if (!await _repository.IsExistDataWithKeyAsync(param)) { await _repository.UpdateAsync(model); id = model.Id; } return(id); }
public async Task <IActionResult> IsExistDataWithKeyAsync([FromBody] ExistWithKeyModel model) { if (string.IsNullOrEmpty(model.FieldName) || string.IsNullOrEmpty(model.FieldName)) { _loger.LogError("Bad Request Parameter"); var error = new BadRequest("Bad Request Parameter", new { model }); return(error.ReturnResponse()); } else if (typeof(ClientApi).HasProperty(model.KeyName.ToLower()) && typeof(ClientApi).HasProperty(model.FieldName.ToLower())) { _loger.LogError("Property name does not exist"); var error = new BadRequest("Property name does not exist", new { model }); return(error.ReturnResponse()); } var exist = await _service.IsExistDataWithKeyAsync(model); var result = new OK("Success check exist data with key " + model.FieldName + " : " + model.FieldValue, new { exist }); return(result.ReturnResponse()); }
public async Task <bool> IsExistDataWithKeyAsync(ExistWithKeyModel model) { var dbSet = _dbContext.Set <TEntity>() .AsQueryable() .AsNoTracking(); IQueryable <TEntity> oldData; if (model.KeyValue.GetType() == typeof(string) || model.KeyValue.GetType() == typeof(Guid)) { oldData = dbSet.Where(model.KeyName + "=\"" + model.KeyValue + "\""); } else { oldData = dbSet.Where(model.KeyName + "=" + model.KeyValue); } var resulOldtData = oldData.Select(model.FieldName).ToDynamicList(); var oldValue = resulOldtData[0]; bool result; if (oldValue != (dynamic)model.FieldValue) { IQueryable <TEntity> exp; var whereCriteria = string.Empty; int i = 1; foreach (var item in model.WhereData) { if (item.Value.GetType() == typeof(string) || item.Value.GetType() == typeof(Guid)) { whereCriteria += item.Key + "=\"" + item.Value + "\""; } else if (item.Value.GetType() == typeof(DateTime)) { var dateValue = DateTime.Parse(item.Value.ToString()); var dateValueAdd = DateTime.Parse(item.Value.ToString()).AddDays(1); whereCriteria += item.Key + " >= DateTime(" + dateValue.Year + ", " + dateValue.Month + ", " + dateValue.Day + ") and " + item.Key + " < DateTime(" + dateValueAdd.Year + ", " + dateValueAdd.Month + ", " + dateValueAdd.Day + ")"; } else { whereCriteria += item.Key + "=" + item.Value; } if (i < model.WhereData.Count) { whereCriteria += " and "; } i++; } exp = dbSet.Where(whereCriteria); result = await exp.AnyAsync(); } else { if (model.WhereData.Count > 1) { IQueryable <TEntity> exp; var whereCriteria = string.Empty; int i = 1; foreach (var item in model.WhereData) { if (item.Value.GetType() == typeof(string) || item.Value.GetType() == typeof(Guid)) { whereCriteria += item.Key + "=\"" + item.Value + "\""; } else if (item.Value.GetType() == typeof(DateTime)) { var dateValue = DateTime.Parse(item.Value.ToString()); var dateValueAdd = DateTime.Parse(item.Value.ToString()).AddDays(1); whereCriteria += item.Key + " >= DateTime(" + dateValue.Year + ", " + dateValue.Month + ", " + dateValue.Day + ") and " + item.Key + " < DateTime(" + dateValueAdd.Year + ", " + dateValueAdd.Month + ", " + dateValueAdd.Day + ")"; } else { whereCriteria += item.Key + "=" + item.Value; } if (i < model.WhereData.Count) { whereCriteria += " and "; } i++; } whereCriteria += " and "; if (model.KeyValue.GetType() == typeof(string) || model.KeyValue.GetType() == typeof(Guid)) { whereCriteria += model.KeyName + "<> \"" + model.KeyValue + "\""; } else { whereCriteria += model.KeyName + " <> " + model.KeyValue; } exp = dbSet.Where(whereCriteria); result = await exp.AnyAsync(); } else { result = false; } } return(result); }
public async Task <bool> IsExistDataWithKeyAsync(ExistWithKeyModel model) { return(await _repository.IsExistDataWithKeyAsync(model)); }