public ResultMesssage Update(Category entity)
        {
            #region Validation Ekleme
            ResultMesssage result = new ResultMesssage();
            result.isSuccess = false;



            //Burada Validation Koyacağız.

            if (entity.Name.Length == 0)
            {
                result.Message = "Kategori Adı Belirtmelisiniz";
                return(result);
            }

            if (entity.Name.Length > 50)
            {
                result.Message = "Kategori Adı için Fazla Karakter Girdiniz";
                return(result);
            }
            #endregion

            try
            {
                _categoryDal.Update(entity);
                result.isSuccess = true;
                return(result);
            }
            catch (Exception e)
            {
                result.Message = string.Format("Bir Hata Oluştu", e.Message);
                return(result);
            }
        }
        public void OnNext(TrainingErrorMessage value)
        {
            NeuralNetwork.NeuralNetwork neuralNetwork            = value.NeuralNetwork;
            Matrix <double>             trainingSet              = value.TrainingSet,
                                        trainingSetOutput        = value.TrainingSetOutput,
                                        crossValidationSet       = value.CrossValidationSet,
                                        crossValidationSetOutput = value.CrossValidationSetOutput;

            //var error = trainingSet.EnumerateRows().Select(row =>
            //{
            //    var temp = neuralNetwork.ForwardInput(row);
            //    return temp.Item1[temp.Item1.Count - 1];
            //}).Zip(trainingSetOutput.EnumerateColumns(), (first, second) => computeError(first, second)).Sum();
            //TrainingErrors.Add(error);
            //CrossValidationErrors.Add(crossValidationSet.EnumerateRows().Select(row =>
            //{
            //    var temp = neuralNetwork.ForwardInput(row);
            //    return temp.Item1[temp.Item1.Count - 1];
            //}).Zip(crossValidationSetOutput.EnumerateColumns(), (first, second) => computeError(first, second)).Sum());
            //value.Error = error;
            if (_isLeven)
            {
                TrainingErrors.Add(value.TrainError);
                CrossValidationErrors.Add(value.CrossError);
                NotifyResults(new ResultMesssage(value.TrainError, value.CrossError, value.Epochs));
                return;
            }
            /*Trainer as observer*/
            double validationERR = 0, trainingERR = 0;
            //int epochsNUM=0;
            var Terror = trainingSet.EnumerateRows().Select(row =>
            {
                var temp = neuralNetwork.ForwardInput(row);
                return(temp.Item1[temp.Item1.Count - 1]);
            }).Zip(trainingSetOutput.EnumerateColumns(), (first, second) => computeError(first, second)).Sum();

            TrainingErrors.Add(Terror);
            trainingERR = Terror;
            var Verror = crossValidationSet.EnumerateRows().Select(row =>
            {
                var temp = neuralNetwork.ForwardInput(row);
                //epochsNUM = temp.Item1.Count;
                return(temp.Item1[temp.Item1.Count - 1]);
            }).Zip(crossValidationSetOutput.EnumerateColumns(), (first, second) => computeError(first, second)).Sum();

            value.Error = Terror;
            CrossValidationErrors.Add(Terror);
            validationERR = Verror;
            Console.WriteLine("{0}\t{1}\t*****{2}", value.Epochs, validationERR, trainingERR);
            //Trainer as observer
            ResultMesssage messsage = new ResultMesssage(trainingERR, validationERR, value.Epochs);

            NotifyResults(messsage);
            /*Trainer as observer*/
        }
        public ResultMesssage Add(Product entity)
        {
            #region Validation Ekleme
            ResultMesssage result = new ResultMesssage();
            result.isSuccess = false;



            //Burada Validation Koyacağız.

            if (entity.Name.Length == 0)
            {
                result.Message = "Ürün Adı Belirtmelisiniz";
                return(result);
            }

            if (entity.Name.Length > 50)
            {
                result.Message = "Ürün Adı için Fazla Karakter Girdiniz";
                return(result);
            }

            var _existingProduct = GetAll().Where(s => s.Name == entity.Name).FirstOrDefault();

            if (_existingProduct != null)
            {
                result.Message = "Bu Ürün İsminyle Bir Ürün Kayıtlı Farklı Bir İsim Seçiniz";
                return(result);
            }

            #endregion

            try
            {
                _productDal.Add(entity);
                result.isSuccess = true;
                return(result);
            }
            catch (Exception e)
            {
                result.Message = string.Format("Bir Hata Oluştu {0}", e.Message);
                return(result);
            }
        }
        public ResultMesssage Delete(Category entity)
        {
            ResultMesssage result = new ResultMesssage();

            result.isSuccess = false;



            try
            {
                _categoryDal.Delete(entity);
                result.isSuccess = true;
                return(result);
            }
            catch (Exception e)
            {
                result.Message = string.Format("Bir Hata Oluştu {0}", e.Message);
                return(result);
            }
        }
        public ResultMesssage Add(Category entity)
        {
            #region Validation Ekleme
            ResultMesssage result = new ResultMesssage();
            result.isSuccess = false;



            //Burada Validation Koyacağız.

            if (entity.Name.Length == 0)
            {
                result.Message = "Kategori Adı Belirtmelisiniz";
                return(result);
            }

            if (entity.Name.Length > 50)
            {
                result.Message = "Kategori Adı için Fazla Karakter Girdiniz";
                return(result);
            }
            #endregion

            //Hata Olmadıysa try catch bloğunu işin içine katarak kaydetme işlemi yaptırılıyor.
            try
            {
                _categoryDal.Add(entity);
                result.isSuccess = true;
            }
            catch (Exception e)
            {
                result.Message = string.Format("Bir Hata Oluştu:{0}", e.Message);
                return(result);
            }


            return(result);
        }