private async Task <bool> UpdateAsync()
        {
            _dataInput = Input;
            var valor = false;

            byte[] imageByte = null;
            var    strategy  = _context.Database.CreateExecutionStrategy();
            await strategy.ExecuteAsync(async() =>
            {
                using (var transaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        var clientData = _customer.getTClient(Input.Nid);
                        if (clientData.Count.Equals(0) || clientData[0].IdClient.Equals(_dataClient2.IdClient))
                        {
                            if (Input.AvatarImage == null)
                            {
                                imageByte = _dataClient2.Image;
                            }
                            else
                            {
                                imageByte = await _uploadimage.ByteAvatarImageAsync(Input.AvatarImage, _environment, "");
                            }
                            var client = new TClients
                            {
                                IdClient  = _dataClient2.IdClient,
                                Nid       = Input.Nid,
                                Name      = Input.Name,
                                LastName  = Input.LastName,
                                Email     = Input.Email,
                                Phone     = Input.Phone,
                                Credit    = Input.Credit,
                                Direccion = Input.Direction,
                                Image     = imageByte,
                            };
                            _context.Update(client);
                            _context.SaveChanges();
                            transaction.Commit();

                            valor = true;
                        }
                        else
                        {
                            _dataInput.ErrorMessage = $"El {Input.Nid} ya esta registrado";
                            valor = false;
                        }
                    }
                    catch (Exception ex)
                    {
                        _dataInput.ErrorMessage = ex.Message;
                        transaction.Rollback();
                        valor = false;
                    }
                }
            });

            return(valor);
        }
        private async Task <bool> SaveAsync()
        {
            _dataInput = Input;
            var valor = false;

            if (ModelState.IsValid)
            {
                var clientList = _context.TClients.Where(u => u.Nid.Equals(Input.Nid)).ToList();
                if (clientList.Count.Equals(0))
                {
                    var strategy = _context.Database.CreateExecutionStrategy();
                    await strategy.ExecuteAsync(async() => {
                        using (var transaction = _context.Database.BeginTransaction())
                        {
                            try
                            {
                                var imageByte = await _uploadimage.ByteAvatarImageAsync(
                                    Input.AvatarImage, _environment, "images/images/default.png");
                                var client = new TClients
                                {
                                    Name      = Input.Name,
                                    LastName  = Input.LastName,
                                    Nid       = Input.Nid,
                                    Email     = Input.Email,
                                    Image     = imageByte,
                                    Phone     = Input.Phone,
                                    Direccion = Input.Direction,
                                    Credit    = Input.Credit,
                                    Date      = DateTime.Now
                                };
                                await _context.AddAsync(client);
                                _context.SaveChanges();

                                var report = new TReports_clients
                                {
                                    Debt        = 0.0m,
                                    Monthly     = 0.0m,
                                    Change      = 0.0m,
                                    LastPayment = 0.0m,
                                    CurrentDebt = 0.0m,
                                    Ticket      = "0000000000",
                                    TClients    = client
                                };
                                await _context.AddAsync(report);
                                _context.SaveChanges();
                                transaction.Commit();
                                _dataInput = null;
                                valor      = true;
                            }
                            catch (Exception ex)
                            {
                                _dataInput.ErrorMessage = ex.Message;
                                transaction.Rollback();
                                valor = false;
                            }
                        }
                    });
                }
                else
                {
                    _dataInput.ErrorMessage = $"El {Input.Nid} ya esta registrado";
                    valor = false;
                }
            }
            else
            {
                foreach (var modelState in ModelState.Values)
                {
                    foreach (var error in modelState.Errors)
                    {
                        _dataInput.ErrorMessage += error.ErrorMessage;
                    }
                }
                valor = false;
            }
            return(valor);
        }