public ActionResult AddPrece(MinimalPreceViewModel prece)
        {
            if (!ModelState.IsValid)
            {
                return View(prece);
            }
            if (dataRepostory.Preces.Any(p => p.PrecesKods == prece.PrecesKods))
            {
                return RedirectToAction("AddRewritePrompt",prece);
            }

            int precesKategorijasID = saveKategory(prece.Kategorija);
            var glabajamaPrece = new Prece
                                       {
                                           KategorijasID = precesKategorijasID,
                                           PrecesApraksts = prece.PrecesApraksts,
                                           PrecesNosaukums = prece.PrecesNosaukums,
                                           PrecesKods = prece.PrecesKods,
                                           PrecesCena = prece.PrecesCena
                                       };

            dataRepostory.SavePrece(glabajamaPrece);
            TempData["message"] = String.Format("Prece \"{0}\" veiksmīgi saglabāta!", prece.PrecesNosaukums);
            return RedirectToAction("Index", "Admin");
        }
        /// <summary>
        /// Metode kura saglabā preci datubāzē
        /// </summary>
        /// <param name="prece">prece kuru jasaglabā</param>
        public void SavePrece(Prece prece)
        {
            //Pievieno tikai tad jaunu ja nav preces ar tadu id ja ir tad atjauno esosho
            if (!context.Preces.Any(p => p.PrecesID == prece.PrecesID))
            {
                context.Preces.Add(prece);
                context.Entry(prece).State = EntityState.Added;
            }
            else
            {
                Prece preceDb = context.Preces.First(p => p.PrecesID == prece.PrecesID);

                preceDb.KategorijasID = prece.KategorijasID;
                preceDb.PrecesCena = prece.PrecesCena;
                preceDb.PrecesApraksts = prece.PrecesApraksts;
                preceDb.PrecesKods = prece.PrecesKods;
                preceDb.PrecesNosaukums = prece.PrecesNosaukums;

                context.Entry(preceDb).State = EntityState.Modified;
            }
            context.SaveChanges();
        }
        /// <summary>
        /// Metode kura parraksta visas preces kuram preces kods sakrit ar ienakosas preces kodu
        /// </summary>
        /// <param name="prece">ienakosa prece</param>
        public void RewriteAllPrecesWithSameKods(Prece prece)
        {
            IQueryable<Prece> precesWithSameKods = Preces.Where(p => p.PrecesKods == prece.PrecesKods);

            foreach(Prece preceWithSameKods in precesWithSameKods)
            {
                preceWithSameKods.PrecesNosaukums = prece.PrecesNosaukums;
                preceWithSameKods.PrecesCena = prece.PrecesCena;
                preceWithSameKods.PrecesApraksts = prece.PrecesApraksts;
                preceWithSameKods.KategorijasID = prece.KategorijasID;
                context.Entry(preceWithSameKods).State = EntityState.Modified;
            }
            context.SaveChanges();
        }
        private int saveCombinedEditViewData(EditPreceViewModel editPreceViewModel)
        {
            //Kategorijas saglabāšanas fāze
            int katId = saveKategory(editPreceViewModel.PrecesKategorija);

            //Termiņa saglabāšanas fāze
            Termins termins =
                dataRepostory.Termini.FirstOrDefault(t => t.TerminaID == editPreceViewModel.TerminaID);

            if (termins != null)
            {
                termins.NodosanasDatums = editPreceViewModel.NodosanasDatums;
                dataRepostory.SaveTermins(termins);
            }

            //Preces saglabāšanas fāze
            var prece = new Prece
            {
                PrecesNosaukums = editPreceViewModel.PrecesNosaukums,
                PrecesCena = editPreceViewModel.PrecesNomasCena,
                PrecesApraksts = editPreceViewModel.PrecesApraksts,
                KategorijasID = katId,
                PrecesID = editPreceViewModel.PrecesID,
                PrecesKods = editPreceViewModel.PrecesKods
            };

            dataRepostory.SavePrece(prece);

            return katId;
        }
        public ActionResult EditRewriteSave(EditPreceViewModel preceRewriteModel)
        {
            if (ModelState.IsValid && preceRewriteModel.PrecesID != 0)
            {
                int precesKatID = saveCombinedEditViewData(preceRewriteModel);

                Prece preceWithKodsToRewriteAllWithSameKods = new Prece
                                                                  {
                                                                      PrecesNosaukums =
                                                                          preceRewriteModel.PrecesNosaukums,
                                                                      PrecesKods = preceRewriteModel.PrecesKods,
                                                                      PrecesApraksts = preceRewriteModel.PrecesApraksts,
                                                                      PrecesCena = preceRewriteModel.PrecesNomasCena,
                                                                      KategorijasID = precesKatID
                                                                  };

                //Parraksta visas preces kurām ir viens un tas pats kods
                dataRepostory.RewriteAllPrecesWithSameKods(preceWithKodsToRewriteAllWithSameKods);
                TempData["message"] = String.Format("Prece \"{1}\" veiksmīgi saglabāta un preces ar kodu: {0} parrakstītas!",
                                                    preceRewriteModel.PrecesKods, preceRewriteModel.PrecesNosaukums);

                return Redirect(preceRewriteModel.ReturnUrl);
            }

            TempData["message"] =
                String.Format("Datos ieviesās kļūdas pirms saglabāšanas, Preces netika saglabātās!");
            return Redirect(preceRewriteModel.ReturnUrl);
        }
        /// <summary>
        /// Metode kura saglaba preces datus un parraksta visas tas preces kuram preces kods atbilda ar sagabajamaas preces kodu
        /// </summary>
        /// <param name="preceToSave">Prece kuras datus saglabat un parrakstit uz parejam precem ar to pasu preces kodu</param>
        /// <returns></returns>
        public ActionResult AddRewriteSave(MinimalPreceViewModel preceToSave)
        {
            if (ModelState.IsValid)
            {
                int precesKategorijasID = saveKategory(preceToSave.Kategorija);
                Prece glabajamaPrece = new Prece
                                           {
                                               KategorijasID = precesKategorijasID,
                                               PrecesApraksts = preceToSave.PrecesApraksts,
                                               PrecesNosaukums = preceToSave.PrecesNosaukums,
                                               PrecesKods = preceToSave.PrecesKods,
                                               PrecesCena = preceToSave.PrecesCena
                                           };
                dataRepostory.SavePrece(glabajamaPrece);
                dataRepostory.RewriteAllPrecesWithSameKods(glabajamaPrece);

                TempData["message"] = String.Format("Prece \"{0}\" veiksmīgi saglabātaveiksmīgi saglabāta un preces ar kodu: {1} parrakstītas!",
                                                    preceToSave.PrecesNosaukums, preceToSave.PrecesKods);

            }
            else
            {
                TempData["message"] = String.Format("Datos ieviesās kļūdas pirms saglabāšanas, Preces netika saglabātās!");

            }

            return RedirectToAction("Index", "Admin");
        }