/// <summary>
 /// Metoda care sterge un utilizator.
 /// </summary>
 /// <param name="utilizator">utilizatorul pe care dorim sa il stergem</param>
 public static void DeleteUtilizator(Utilizatori utilizator)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             var obj = context.Utilizatori.First(x => x.idUtilizator == utilizator.idUtilizator);
             obj.isDeleted = true;
             context.ApplyCurrentValues("Utilizatori", obj);
             context.SaveChanges();
         }
     }
     catch (Exception exc) { throw exc; }
 }
 /// <summary>
 /// Metoda care sterge o anumita regiune.
 /// </summary>
 /// <param name="regiune">regiunea pe care dorim sa o stergem</param>
 public static void DeleteRegiune(Regiuni regiune)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             var obj = context.Regiuni.First(x => x.idRegiune == regiune.idRegiune);
             obj.isDeleted = true;
             context.ApplyCurrentValues("Regiuni", obj);
             context.SaveChanges();
         }
     }
     catch (Exception ex) {  }
 }
 /// <summary>
 /// Metoda care sterge o anumita localitate.
 /// </summary>
 /// <param name="localitate">localitatea pe care dorim sa o stergem</param>
 public static void DeleteLocalitate(Localitati localitate)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             var obj = context.Localitati.First(x => x.idLocalitate == localitate.idLocalitate);
             obj.isDeleted = true;
             context.ApplyCurrentValues("Localitati", obj);
             context.SaveChanges();
         }
     }
     catch (Exception exc) { throw exc; }
 }
 public static void DeleteRezervare(Rezervari rezervare)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             var obj = context.Rezervari.First(x => x.idRezervare == rezervare.idRezervare);
             obj.isDeleted = true;
             context.ApplyCurrentValues("Rezervari", obj);
             context.SaveChanges();
         }
     }
     catch (Exception exc) { throw exc; }
 }
 /// <summary>
 /// Metoda care updateaza o anumita regiune.
 /// </summary>
 /// <param name="regiune">regiunea noua</param>
 /// <param name="origRegiune">regiunea veche, cea pe care o updatam</param>
 public static void UpdateRegiune(Regiuni regiune, Regiuni origRegiune)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             context.Regiuni.Attach(origRegiune);
             context.ApplyCurrentValues("Regiuni", regiune);
             context.SaveChanges();
         }
     }
     catch (Exception ex) {  }
 }
 /// <summary>
 /// Metoda care updateaza o anumita localitate.
 /// </summary>
 /// <param name="localitate">localitatea noua</param>
 /// <param name="origlocalitate">localitatea veche</param>
 public static void UpdateLocalitate(Localitati localitate, Localitati origlocalitate)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             context.Localitati.Attach(origlocalitate);
             context.ApplyCurrentValues("Localitati", localitate);
             context.SaveChanges();
         }
     }
     catch (Exception exc) { throw exc; }
 }
 /// <summary>
 /// Metoda care updateaza o anumita unitate
 /// </summary>
 /// <param name="unitate">noua unitate</param>
 /// <param name="origUnitate">vechea unitate</param>
 public static void UpdateUnitate(Unitati unitate, Unitati origUnitate)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             context.Unitati.Attach(origUnitate);
             context.ApplyCurrentValues("Unitati", unitate);
             context.SaveChanges();
         }
     }
     catch (Exception exc) { throw exc; }
 }
 /// <summary>
 /// Metoda care updateaza datele unui utilizator.
 /// </summary>
 /// <param name="utilizator">noile date ale utilizatorului</param>
 /// <param name="origUtilizator">utilizatorul pe care dorim sa il updatam</param>
 public static void UpdateUtilizator(Utilizatori utilizator, Utilizatori origUtilizator)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             context.Utilizatori.Attach(origUtilizator);
             context.ApplyCurrentValues("Utilizatori", utilizator);
             context.SaveChanges();
         }
     }
     catch (Exception exc) { throw exc; }
 }
 public static void UpdateRezervari(Rezervari rezervare, Rezervari origRezervare)
 {
     try
     {
         using (MasterEntities context = new MasterEntities())
         {
             context.Rezervari.Attach(origRezervare);
             context.ApplyCurrentValues("Rezervari", rezervare);
             context.SaveChanges();
         }
     }
     catch (Exception exc) { throw exc; }
 }
 public static string UpdateGrid(Rezervari rezervare)
 {
     var returnString = string.Empty;
     using (MasterEntities context = new MasterEntities())
     {
         var obj = context.Rezervari.ToList().First(x => x.idRezervare == rezervare.idRezervare);
         obj.tipRezervare = rezervare.tipRezervare;
         context.ApplyCurrentValues("Rezervari", obj);
         context.SaveChanges();
         returnString = "Salvare efectuata cu succes";
     }
     return returnString;
 }
        public static string Update(Rezervari rezervare)
        {
            string returnString=string.Empty;
            try
            {
                using (MasterEntities context = new MasterEntities())
                {
                    MasterWebServiceSoapClient client = new MasterWebServiceSoapClient();

                    var obj = context.Rezervari.ToList().First(x => x.idRezervare == rezervare.idRezervare);
                    if (rezervare.aprobata.Value)
                    {
                        if (CheckIfIsAvailable(out returnString, obj.idUnitate, rezervare))
                        {
                            rezervare.idUnitate = obj.idUnitate;
                            rezervare.idUtilizator = obj.idUtilizator;
                            rezervare.isDeleted = false;
                            context.ApplyCurrentValues("Rezervari", rezervare);
                            context.SaveChanges();

                            var user = UtilizatorRepository.GetUtilizator(rezervare.idUtilizator.Value);
                            var unidate = UnitateRepository.GetUnitate(rezervare.idUnitate);
                            string fromAddress = "*****@*****.**";
                            string fromPassword = "******";

                            string bodyEmail = "Stimate " + user.numeComplet + ",\n";
                            bodyEmail +=
                                    "Rezervarea dumneavoastra a fost confirmata . Va confirmam faptul ca incepand cu data de " +
                                    rezervare.dataStart + " sunteti asteptat la " + unidate.numeUnitate +
                                    ". Va reamintim ca rezervarea dumneavoastra a fost facuta pentru " + rezervare.nrNopti +
                                    " nopti si ati rezervat un numar de " + rezervare.numarCamere +
                                    " camere. Va rugam sa confirmati rezervarea in termen de 2 zile la linkul:http://localhost:50298/User/Payments.aspx?Rezervare=" + rezervare.idRezervare;
                            client.Send_Email(fromAddress, user.email, bodyEmail, fromPassword);
                        }

                        else
                        {
                            if ((int) CalculateBookingAuthorizedLevel(rezervare.dataStart, rezervare.idUnitate) >
                                RezervareRepository.GetRezervari()
                                    .Where(
                                        x =>
                                            x.idUnitate == rezervare.idUnitate && x.isDeleted == false &&
                                            x.aprobata == true && x.dataStart.AddDays(x.nrNopti) > rezervare.dataStart)
                                    .Count())
                            {
                                rezervare.idUnitate = obj.idUnitate;
                                rezervare.idUtilizator = obj.idUtilizator;
                                rezervare.isDeleted = false;
                                context.ApplyCurrentValues("Rezervari", rezervare);
                                context.SaveChanges();

                                var user = UtilizatorRepository.GetUtilizator(rezervare.idUtilizator.Value);
                                var unidate = UnitateRepository.GetUnitate(rezervare.idUnitate);
                                string fromAddress = "*****@*****.**";
                                string fromPassword = "******";

                                string bodyEmail = "Stimate " + user.numeComplet + ",\n";
                                bodyEmail +=
                                    "Rezervarea dumneavoastra a fost confirmata . Va confirmam faptul ca incepand cu data de " +
                                    rezervare.dataStart + " sunteti asteptat la " + unidate.numeUnitate +
                                    ". Va reamintim ca rezervarea dumneavoastra a fost facuta pentru " + rezervare.nrNopti +
                                    " nopti si ati rezervat un numar de " + rezervare.numarCamere +
                                    " camere. Va rugam sa confirmati rezervarea in termen de 2 zile la linkul:http://localhost:50298/User/Payments.aspx?Rezervare=" + rezervare.idRezervare;
                                client.Send_Email(fromAddress, user.email, bodyEmail, fromPassword);
                            }
                        }
                    }
                    else
                    {
                        rezervare.idUnitate = obj.idUnitate;
                        rezervare.idUtilizator = obj.idUtilizator;
                        rezervare.isDeleted = false;
                        context.ApplyCurrentValues("Rezervari", rezervare);
                        context.SaveChanges();
                    }
                }
            }
            catch (Exception exc) { throw exc; }
            return returnString;
        }