public static void VymenaLahve(int RevizeSCid, int AriclId, string SC, DateTime DatumVyroby, DateTime DatumDodani)
        {
            RevizeSC oldRevizeSC = new RevizeSC();
            Revize   revize      = new Revize();
            Provoz   provoz      = new Provoz();

            RevizeSC     newRevizeSC     = new RevizeSC();
            SCProvozu    oldSCProvozu    = new SCProvozu();
            SCProvozu    newSCProvozu    = new SCProvozu();
            SerioveCislo oldSerioveCislo = new SerioveCislo();
            SerioveCislo newSerioveCislo = new SerioveCislo();
            VymenyLahvi  vymenyLahvi     = new VymenyLahvi();


            oldRevizeSC     = RevizeSC.GetRevizeSCByRevizeSCid(RevizeSCid);
            oldSCProvozu    = SCProvozu.GetSCProvozuById(oldRevizeSC.SCProvozuId);
            oldSerioveCislo = SerioveCislo.GetSerioveCisloById(oldSCProvozu.SerioveCisloId);
            revize          = Revize.GetById(oldRevizeSC.RevizeId);
            provoz          = Provoz.GetById(revize.ProvozId);

            SCImport sCImport = new SCImport();

            sCImport.ArtiklId           = oldSerioveCislo.ArtiklId;
            sCImport.ArtiklSAPKod       = oldSerioveCislo.Artikl.KodSAP;
            sCImport.Baterie            = oldSCProvozu.Baterie;
            sCImport.BaterieArtikl      = oldSCProvozu.BaterieArtikl;
            sCImport.DatumBaterie       = oldSCProvozu.DatumBaterie;
            sCImport.DatumDodani        = DatumDodani;
            sCImport.DatumPosledniZmeny = revize.DatumRevize;
            sCImport.DatumPrirazeni     = revize.DatumRevize;
            sCImport.DatumPyro          = oldSCProvozu.DatumPyro;
            sCImport.DatumRevize        = oldSCProvozu.DatumRevize;
            sCImport.DatumTlkZk         = revize.DatumRevize;
            sCImport.DatumVymeny        = null;
            sCImport.DatumVyroby        = revize.DatumRevize;
            sCImport.Lokace             = oldSCProvozu.Lokace;
            sCImport.Proverit           = false;
            sCImport.Provozy            = oldSCProvozu.ProvozId;
            sCImport.SerioveCislo       = SC;
            sCImport.Submitted          = true;
            sCImport.Umisteni           = oldSCProvozu.Umisteni.Value;
            sCImport.Zakaznik           = provoz.ZakaznikId;
            sCImport.ZakaznikSAPKod     = provoz.Zakaznik.KodSAP;
            sCImport.Znaceni            = oldSCProvozu.Znaceni;

            // vytvoreni Serioveho cisla akcniho prvku
            var id = SerioveCislo.AddSeriovecislo(sCImport);

            newSerioveCislo = SerioveCislo.GetSerioveCisloById(id);
            // vyvoreni noveho provozusc
            var idscprovozu = SCProvozu.AddSCProvozu(sCImport, id);

            newSCProvozu = SCProvozu.GetSCProvozuById(idscprovozu);
            //Dohledani serioveho cisla lahve
            var seriovecislolahve = DohledaniSeriovehoCislaLahveDleSeriovehoCislaAkcnihoprvku(newSerioveCislo.SerioveCislo1, newSerioveCislo.Artikl.KodSAP);

            // vytvoření vazby vymeny mezi jednotlivými SCProvozu
            vymenyLahvi = VymenyLahvi.GenerujVymenu(oldSCProvozu, newSCProvozu, revize.DatumRevize, revize.Id, seriovecislolahve);
            // zneaktivneni stareho provozusc
            SCProvozu.ZneaktivniSCProvozu(oldSCProvozu, revize.DatumRevize);

            // odebrani stare revizesc
            RevizeSC.Remove(oldRevizeSC.Id);

            // vymena v nasledujicich otevrenych revizich stareho revizesc za noveho
            RevizeSC.ChangeRevizeSCForUpcomingOpenRevision(oldSCProvozu, newSCProvozu, revize.DatumRevize);
        }
        public ActionResult ImportSCtoServis([Bind(Include = "Zakaznik, Provozy, Umisteni, SerioveCislo, ArtiklId, DatumVyroby, DatumVymeny, DatumDodani, Submitted, DatumRevize, DatumBaterie, DatumPyro, DatumTlkZk, DatumPrirazeni, Lokace, Znaceni,Baterie,Proverit, BaterieArtikl,UpravenaPeriodaRevize,UpravenaPeriodaBaterie,UpravenaPeriodaPyro,UpravenaPeriodaTlkZk,DatumRevizeTlakoveNadoby,DatumVnitrniRevizeTlakoveNadoby,UpravenaPeriodaRevizeTlakoveNadoby,UpravenaPeriodaVnitrniRevizeTlakoveNadoby ")] SCImport scimport)
        {
            int id          = 0;
            int idscprovozu = 0;

            ViewBag.SkupinaArtiklu = db.Artikl.Where(t => t.Id == scimport.ArtiklId).Select(t => t.SkupinaArtiklu).FirstOrDefault();
            ViewBag.Revize         = db.Artikl.Where(t => t.Id == scimport.ArtiklId).Select(t => t.Revize).FirstOrDefault();
            ViewBag.TlakovaZk      = db.Artikl.Where(t => t.Id == scimport.ArtiklId).Select(t => t.TlakovaZk).FirstOrDefault();
            ViewBag.VymenaBaterie  = db.Artikl.Where(t => t.Id == scimport.ArtiklId).Select(t => t.VymenaBaterie).FirstOrDefault();
            ViewBag.VymenaPyro     = db.Artikl.Where(t => t.Id == scimport.ArtiklId).Select(t => t.VymenaPyro).FirstOrDefault();
            ViewBag.TlakovaNadoba  = db.Artikl.Where(t => t.Id == scimport.ArtiklId).Select(t => t.TlakovaNadoba).FirstOrDefault();



            //if (scimport.DatumVyroby == DateTime.MinValue) { scimport.DatumVyroby = DateTime.Now; }
            //if (scimport.DatumDodani == DateTime.MinValue) { scimport.DatumDodani = DateTime.Now; }
            if (scimport.DatumPosledniZmeny == DateTime.MinValue)
            {
                scimport.DatumPosledniZmeny = DateTime.Now;
            }


            if (scimport.Submitted == true)
            {
                if (scimport.DatumPrirazeni == null)
                {
                    scimport.DatumPrirazeni = scimport.DatumDodani;
                }
                //if (scimport.DatumTlkZk == null) { scimport.DatumTlkZk = scimport.DatumVyroby; }
                id          = SerioveCislo.AddSeriovecislo(scimport);
                idscprovozu = SCProvozu.AddSCProvozu(scimport, id);
                // uložení datumů do sesion
                if (scimport.DatumBaterie > DateTime.MinValue || scimport.DatumBaterie == null)
                {
                    Session["DatumBaterie"] = scimport.DatumBaterie;
                }
                if (scimport.DatumDodani > DateTime.MinValue || scimport.DatumDodani == null)
                {
                    Session["DatumDodani"] = scimport.DatumDodani;
                }
                if (scimport.DatumPrirazeni > DateTime.MinValue || scimport.DatumPrirazeni == null)
                {
                    Session["DatumPrirazeni"] = scimport.DatumPrirazeni;
                }
                if (scimport.DatumPyro > DateTime.MinValue || scimport.DatumPyro == null)
                {
                    Session["DatumPyro"] = scimport.DatumPyro;
                }
                if (scimport.DatumRevize > DateTime.MinValue || scimport.DatumRevize == null)
                {
                    Session["DatumRevize"] = scimport.DatumRevize;
                }
                if (scimport.DatumTlkZk > DateTime.MinValue || scimport.DatumTlkZk == null)
                {
                    Session["DatumTlkZk"] = scimport.DatumTlkZk;
                }
                if (scimport.DatumVymeny > DateTime.MinValue || scimport.DatumVymeny == null)
                {
                    Session["DatumVymeny"] = scimport.DatumVymeny;
                }
                if (scimport.DatumVyroby > DateTime.MinValue || scimport.DatumVyroby == null)
                {
                    Session["DatumVyroby"] = scimport.DatumVyroby;
                }
                if (scimport.UpravenaPeriodaRevize != null)
                {
                    Session["UpravenaPeriodaRevize"] = scimport.UpravenaPeriodaRevize;
                }

                if ((id > 0) || (idscprovozu > 0))
                {
                    return(RedirectToAction("Details", "Umistenis", new { id = scimport.Umisteni, Provoz = scimport.Provozy, scimport.Zakaznik }));
                }
            }
            if ((scimport.Submitted == false) || ((id == 0) || (idscprovozu == 0)))
            {
                // načtení datumů ze session
                try
                {
                    var DatumBaterie = Convert.ToDateTime(Session["DatumBaterie"]);
                    if (DatumBaterie > DateTime.MinValue)
                    {
                        scimport.DatumBaterie = DatumBaterie;
                    }
                    else
                    {
                        scimport.DatumBaterie = null;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumBaterie - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }
                try
                {
                    var DatumDodani = Convert.ToDateTime(Session["DatumDodani"]);
                    if (DatumDodani > DateTime.MinValue)
                    {
                        scimport.DatumDodani = DatumDodani;
                    }
                    else
                    {
                        scimport.DatumDodani = DateTime.Now;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumDodani - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }
                try
                {
                    var DatumPrirazeni = Convert.ToDateTime(Session["DatumPrirazeni"]);
                    if (DatumPrirazeni > DateTime.MinValue)
                    {
                        scimport.DatumPrirazeni = DatumPrirazeni;
                    }
                    else
                    {
                        scimport.DatumPrirazeni = DateTime.Now;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumPrirazeni - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }
                try
                {
                    var DatumPyro = Convert.ToDateTime(Session["DatumPyro"]);
                    if (DatumPyro > DateTime.MinValue)
                    {
                        scimport.DatumPyro = DatumPyro;
                    }
                    else
                    {
                        scimport.DatumPyro = null;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumPyro - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }
                try
                {
                    var DatumRevize = Convert.ToDateTime(Session["DatumRevize"]);
                    if (DatumRevize > DateTime.MinValue)
                    {
                        scimport.DatumRevize = DatumRevize;
                    }
                    else
                    {
                        scimport.DatumRevize = null;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumRevize - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }
                try
                {
                    var DatumTlkZk = Convert.ToDateTime(Session["DatumTlkZk"]);
                    if (DatumTlkZk > DateTime.MinValue)
                    {
                        scimport.DatumTlkZk = DatumTlkZk;
                    }
                    else
                    {
                        scimport.DatumTlkZk = null;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumTlkZk - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }
                try
                {
                    var DatumVymeny = Convert.ToDateTime(Session["DatumVymeny"]);
                    if (DatumVymeny > DateTime.MinValue)
                    {
                        scimport.DatumVymeny = DatumVymeny;
                    }
                    else
                    {
                        scimport.DatumVymeny = null;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumVymeny - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }
                try
                {
                    var DatumVyroby = Convert.ToDateTime(Session["DatumVyroby"]);
                    if (DatumVyroby > DateTime.MinValue)
                    {
                        scimport.DatumVyroby = DatumVyroby;
                    }
                    else
                    {
                        scimport.DatumVyroby = DateTime.Now;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumVyroby - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }
                try
                {
                    int?UpravenaPeriodaRevize = Convert.ToInt32(Session["UpravenaPeriodaRevize"]);
                    if (UpravenaPeriodaRevize != null && UpravenaPeriodaRevize != 0)
                    {
                        scimport.UpravenaPeriodaRevize = UpravenaPeriodaRevize;
                    }
                    else
                    {
                        scimport.UpravenaPeriodaRevize = null;
                    }
                }
                catch (Exception ex)
                {
                    log.Debug("Details - Seassion Read - DatumVyroby - Error number: " + ex.HResult + " - " + ex.Message + " - " + ex.Data + " - " + ex.InnerException);
                }

                ViewBag.Zakaznik      = new SelectList(db.Zakaznik, "Id", "NazevZakaznika", scimport.Zakaznik);
                ViewBag.Provozy       = new SelectList(db.Provoz.Where(p => p.ZakaznikId == scimport.Zakaznik), "Id", "NazevProvozu", scimport.Provozy);
                ViewBag.Umisteni      = new SelectList(db.Umisteni.Where(u => u.ProvozId == scimport.Provozy), "Id", "NazevUmisteni", scimport.Umisteni);
                ViewBag.ArtiklId      = new SelectList(db.Artikl.Where(r => r.SkupinaArtiklu1.Id != 129), "Id", "Nazev", scimport.ArtiklId);
                ViewBag.BaterieArtikl = new SelectList(db.Artikl.Where(r => r.SkupinaArtiklu1.Id == 2), "Id", "Nazev");
            }
            return(View(scimport));
        }