public void InsertOrUpdate(Factuur factuur)
 {
     if (factuur.Id == default(int)) {
         // New entity
         context.Factuurs.Add(factuur);
     } else {
         // Existing entity
         context.Entry(factuur).State = EntityState.Modified;
     }
 }
        public Factuur Factureer(int[] ids, int departementKlantId)
        {
            DepartementKlant departementKlant = uow.DepartementKlantRepository.Find(departementKlantId);
            Factuur factuur = null;

            if (departementKlant != null && ids.Length > 0)
            {
                factuur = new Factuur()
                {
                    FactuurJaar = DateTime.Today.Year,
                    FactuurDatum = DateTime.Today,
                    FactuurNummer = String.Format("FAC{0}{1}{2}.{3}",
                        DateTime.Today.Year,
                        DateTime.Today.Month,
                        DateTime.Today.Day,
                        departementKlant.Id
                    )
                };

                uow.FactuurRepository.InsertOrUpdate(factuur);
                departementKlant.Facturen.Add(factuur);                
            } else
            {
                throw new Exception("Ongeldige uurregistratieIds of departementKlantId");
            }            

            UurRegistratie uurRegistratie;
            foreach (int id in ids)
            {
                uurRegistratie = uow.UurRegistratieRepository.Find(id);

                if (uurRegistratie != null)
                { 
                    FactuurDetail facDetail = new FactuurDetail()
                    {
                        Factuur = factuur,
                        FactuurId = factuur.Id,
                        Omschrijving = uurRegistratie.Omschrijving,
                        UurRegistratie = uurRegistratie,
                        UurRegistratieId = uurRegistratie.Id
                    };                    

                    facDetail.BerekenLijnWaarde();
                    factuur.FactuurDetails.Add(facDetail);
                }
            }

            factuur.BerekenTotaal();
            uow.saveChanges();

            // Factuurnummer uniek maken

            factuur.FactuurNummer += "." + factuur.Id;
            uow.saveChanges();

            return factuur;
        }