public int changeMedicData(string username, string password, string cnp, string email, string lastname, string firstname, string address, string dateofbirth, string specializare)
        {
            datamedic   medic  = new datamedic();
            MedicDetail detail = new MedicDetail();

            using (MedicDBEntities3 db = new MedicDBEntities3())
            {
                try
                {
                    medic = db.datamedics.Where(x => x.cnp == cnp).FirstOrDefault();

                    medic.password = password;
                    //changing cnp is prohibited, because this is key information (for identifying)
                    medic.email    = email;
                    medic.username = username;

                    db.Entry(medic).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();

                    detail                 = db.MedicDetails.Where(x => x.cnp == medic.cnp).FirstOrDefault();
                    detail.lastname        = lastname;
                    detail.firstname       = firstname;
                    detail.address         = address;
                    detail.dateofbirth     = dateofbirth;
                    detail.specializare    = specializare;
                    db.Entry(detail).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                }
                catch
                {
                    return(-1);
                }
                return(1);
            } //using
        }     //changeMedicData()
        public void dateMedic(string mCNP, ref string mLName, ref string mFName)
        {
            MedicDetail medic = new MedicDetail();

            using (MedicDBEntities3 md = new MedicDBEntities3())
            {
                medic  = md.MedicDetails.Where(x => x.cnp == mCNP).FirstOrDefault();
                mLName = medic.lastname;
                mFName = medic.firstname;
            }
        }
        public int registerMedic(string username, string password, string cnp, string email, string lastname, string firstname, string address, string dateofbirth, string specializare)
        {
            datamedic medic1 = new datamedic();
            datamedic m1     = new datamedic(); //m1 se foloseste pentru cautare in baza de date
                                                //daca medicul nu exista in baza de date, atunci am fi avut un null pointer in medic
                                                //si intr-un null pointer nu se pot insera date (throws NullPointerException)

            MedicDetail detail = new MedicDetail();

            detail.lastname     = lastname;
            detail.firstname    = firstname;
            detail.address      = address;
            detail.dateofbirth  = dateofbirth;
            detail.cnp          = cnp;
            detail.specializare = specializare;

            using (MedicDBEntities3 db = new MedicDBEntities3())
            {
                m1 = db.datamedics.Where(x => x.cnp == cnp).FirstOrDefault();
                if (m1 != null)
                {
                    return(0);           //it means that the given CNP already exists, registration is not possible
                }
                //otherwise we create the medic object and insert it into the datamedic tabel
                medic1.username = username;
                medic1.password = password;
                medic1.cnp      = cnp;
                medic1.email    = email;
                try
                {
                    db.datamedics.Add(medic1);
                    db.SaveChanges();
                }

                catch
                {
                    return(-1);
                }

                try
                {
                    db.MedicDetails.Add(detail);
                    db.SaveChanges();
                }
                catch
                {
                    return(-2);
                }

                return(1);
            } //using
        }     //registerMedic
        public void DoctorsfromSpecialization(string specializare, ref List <string> list)
        {
            MedicDetail detail = new MedicDetail();

            using (MedicDBEntities3 md = new MedicDBEntities3())
            {
                List <MedicDetail> mList = new List <MedicDetail>();

                mList = md.MedicDetails.Where(x => x.specializare == specializare).ToList();

                foreach (var det in mList)
                {
                    list.Add(det.lastname + " " + det.firstname);
                }
            }
        }
        public int programari(string pCNP, string pLName, string pFName, string descriere, string date, string mFName, string mLName)
        {
            Programare    programare = new Programare();
            PacientDetail p_detail   = new PacientDetail();
            MedicDetail   m_detail   = new MedicDetail();
            Programare    p1         = new Programare();


            using (MedicDBEntities3 md = new MedicDBEntities3())
            {
                try
                {
                    p_detail = md.PacientDetails.Where(x => x.pacient_cnp == pCNP).FirstOrDefault();
                    m_detail = md.MedicDetails.Where(x => x.lastname == mLName && x.firstname == mFName).FirstOrDefault();

                    programare = md.Programares.Where(x => x.data == date && x.m_lastname == m_detail.lastname && x.m_firstname == m_detail.firstname).FirstOrDefault();

                    if (programare != null)
                    {
                        return(0); //exista o programare
                    }
                    else
                    {
                        p1.pacient_cnp = pCNP;
                        p1.p_lastname  = pLName;
                        p1.p_firstname = pFName;
                        p1.descriere   = descriere;
                        p1.data        = date;
                        p1.m_firstname = mFName;
                        p1.m_lastname  = mLName;

                        md.Programares.Add(p1);
                        md.SaveChanges();
                    }
                }
                catch
                {
                    return(-1);
                }
                return(1);
            }
        }
        public void getMedicData(ref string username, ref string password, string cnp, ref string email, ref string lastname, ref string firstname, ref string address, ref string dateofbirth, ref string specializare)
        {
            datamedic   medic  = new datamedic();
            MedicDetail detail = new MedicDetail();

            using (MedicDBEntities3 db = new MedicDBEntities3())
            {
                medic    = db.datamedics.Where(x => x.cnp == cnp).FirstOrDefault();
                password = medic.password;
                cnp      = medic.cnp;
                email    = medic.email;
                //search in datamedics by cnp
                detail       = db.MedicDetails.Where(x => x.cnp == medic.cnp).FirstOrDefault();
                lastname     = detail.lastname;
                firstname    = detail.firstname;
                address      = detail.address;
                dateofbirth  = detail.dateofbirth;
                specializare = detail.specializare;
                //search in medicdetails based on cnp
            }
        }
        public int deleteMedicAccount(string username, string cnp)
        {
            datamedic   medic  = new datamedic();
            MedicDetail detail = new MedicDetail();

            try
            {
                using (MedicDBEntities3 db = new MedicDBEntities3())
                {
                    medic = db.datamedics.Where(x => x.username == username).FirstOrDefault();
                    if (medic.cnp != cnp)
                    {
                        return(-1);
                    }

                    detail = db.MedicDetails.Where(x => x.cnp == medic.cnp).FirstOrDefault();
                    var entry = db.Entry(detail);
                    if (entry.State == System.Data.Entity.EntityState.Detached)
                    {
                        db.MedicDetails.Attach(detail);
                    }
                    db.MedicDetails.Remove(detail);
                    db.SaveChanges();

                    var entry1 = db.Entry(medic);
                    if (entry1.State == System.Data.Entity.EntityState.Detached)
                    {
                        db.datamedics.Attach(medic);
                    }
                    db.datamedics.Remove(medic);
                    db.SaveChanges();
                } //using
            }     //try
            catch
            {
                return(-2);
            } //catch
            return(1);
        }     //function