Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public async Task <bool> IsExistDataWithKeyAsync(ExistWithKeyModel model)
 {
     return(await _repository.IsExistDataWithKeyAsync(model));
 }