コード例 #1
0
        /// <summary>
        /// Adds the specified doctor to the specified patient.
        /// </summary>
        /// <param name="patient">The patient.</param>
        /// <param name="doctor">The doctor.</param>
        /// <exception cref="EntityNotFoundException">If there's no link between the doctor and the patient</exception>
        public void AddDoctorTo(LightPatientDto patient, LightDoctorDto doctor)
        {
            var patientEntity = this.Session.Get <Patient>(patient.Id);
            var doctorEntity  = this.Session.Get <Doctor>(doctor.Id);

            new Updator(this.Session).AddDoctorTo(patientEntity, doctorEntity);
        }
コード例 #2
0
 /// <summary>
 /// Called when a new doctor is binded to the connected patient.
 /// </summary>
 /// <param name="doctor">The doctor.</param>
 public void OnDoctorUnbinded(LightDoctorDto doctor)
 {
     if (this.DoctorUnbinded != null)
     {
         this.DoctorUnbinded(this, new EventArgs <LightDoctorDto>(doctor));
     }
 }
コード例 #3
0
        /// <summary>
        /// Gets the full doctor from the specified light dto.
        /// </summary>
        /// <param name="light">The light doctor dto.</param>
        /// <returns></returns>
        public DoctorDto GetFullDoctor(LightDoctorDto light)
        {
            var entity = (from p in this.Session.Query <Doctor>()
                          where p.Id == light.Id
                          select p).Single();

            return(Mapper.Map <Doctor, DoctorDto>(entity));
        }
コード例 #4
0
        /// <summary>
        /// Determines whether the specified patient has the specified doctor.
        /// </summary>
        /// <param name="patient">The patient.</param>
        /// <param name="doctor">The doctor.</param>
        /// <returns>
        ///   <c>true</c> if the specified patient has the doctor; otherwise, <c>false</c>.
        /// </returns>
        public bool HasDoctor(LightPatientDto patient, LightDoctorDto doctor)
        {
            var entity = (from p in this.Session.Query <Patient>()
                          where p.Id == patient.Id
                          select p).Single();

            return((from d in entity.Doctors
                    where d.Id == doctor.Id
                    select d).Count() > 0);
        }
コード例 #5
0
ファイル: Remover.cs プロジェクト: thabet-fix/ndoctor
        /// <summary>
        /// Removes the link that existed between the specified patient and the specified doctor.
        /// </summary>
        /// <param name="doctor">The doctor to remove of the specified patient.</param>
        /// <param name="forPatient">The doctor will be unbound for this patient.</param>
        /// <exception cref="EntityNotFoundException">If there's no link between the doctor and the patient</exception>
        public void Remove(LightDoctorDto doctor, LightPatientDto forPatient)
        {
            var patientEntity = this.Session.Get <Patient>(forPatient.Id);
            var doctorEntity  = this.Session.Get <Doctor>(doctor.Id);

            var doctorToDel  = this.GetDoctorToDel(doctor, patientEntity);
            var patientToDel = this.GetPatientToDel(forPatient, doctorEntity);

            patientEntity.Doctors.Remove(doctorToDel);
            doctorEntity.Patients.Remove(patientToDel);

            this.Session.Update(patientEntity);
            this.Session.Update(doctorEntity);
        }
コード例 #6
0
ファイル: Remover.cs プロジェクト: thabet-fix/ndoctor
        private Doctor GetDoctorToDel(LightDoctorDto doctor, Patient patientEntity)
        {
            var doctorToDel = (from d in patientEntity.Doctors
                               where d.Id == doctor.Id
                               select d).FirstOrDefault();

            if (doctorToDel == null)
            {
                throw new EntityNotFoundException(typeof(Doctor));
            }
            else
            {
                return(doctorToDel);
            }
        }
コード例 #7
0
        private IEnumerable <LightDoctorDto> GetDoubloonsOf(LightDoctorDto doctor, IQueryable <Doctor> query)
        {
            if (query == null)
            {
                query = this.Session.Query <Doctor>();
            }

            var entities = (from doc in query
                            where doc.FirstName == doctor.FirstName &&
                            doc.LastName == doctor.LastName &&
                            doc.Specialisation.Id == doctor.Specialisation.Id &&
                            doc.Id != doctor.Id
                            select doc).AsEnumerable();

            return(Mapper.Map <IEnumerable <Doctor>, IEnumerable <LightDoctorDto> >(entities));
        }
コード例 #8
0
        private void Replace(IEnumerable <LightDoctorDto> doubloons, LightDoctorDto withDoctor, IEnumerable <Patient> preloadedPatients)
        {
            var updator = new Updator(this.Session);

            //Select the Id of doubloons and be sure the replacement is not in the list of items to remove
            var ids = (from d in doubloons
                       where d.Id != withDoctor.Id
                       select d.Id).ToList();

            // Find the replacement doctor
            var newDoctor = this.Session.Get <Doctor>(withDoctor.Id);

            //Find the patients that has on of the doubloons
            if (preloadedPatients == null)
            {
                preloadedPatients = this.Session.Query <Patient>().ToList();
            }
            var patients = (from pat in preloadedPatients
                            where pat.Doctors.Where(e => ids.Contains(e.Id)).Count() > 0
                            select pat);

            // Replace the doubloons with the replacement patient
            foreach (var patient in patients)
            {
                //foreach (var doctor in patient.Doctors)
                for (int i = 0; i < patient.Doctors.Count; i++)
                {
                    var doctor = patient.Doctors[i];
                    if (ids.Contains(doctor.Id))
                    {
                        var toRemove = this.Session.Get <Doctor>(doctor.Id);
                        patient.Doctors.Remove(toRemove);
                        updator.AddDoctorTo(patient, newDoctor);
                        this.Session.Update(patient);
                    }
                }
            }
            // Remove old not used doctors
            foreach (var id in ids)
            {
                var doctor = this.Session.Get <Doctor>(id);
                if (doctor != null)
                {
                    this.Session.Delete(doctor);
                }
            }
        }
コード例 #9
0
        /// <summary>
        /// Create the specified item into the database
        /// </summary>
        /// <param name="item">The item to add in the database</param>
        public long Create(LightDoctorDto item)
        {
            Assert.IsNotNull(item, "item");

            var found = (from p in this.Session.Query <Doctor>()
                         where p.Id == item.Id
                         select p).ToList().Count() > 0;

            if (found)
            {
                throw new ExistingItemException();
            }

            var entity = Mapper.Map <LightDoctorDto, Doctor>(item);

            item.Id = (long)this.Session.Save(entity);
            return(item.Id);
        }
コード例 #10
0
 public UnbindDoctorAction(IPatientDataComponent component, LightPatientDto patient, LightDoctorDto doctor)
     : base(component, patient, doctor)
 {
 }
コード例 #11
0
 /// <summary>
 /// Finds the patients older than the specified age.
 /// </summary>
 /// <param name="age">The age of the patient in years.</param>
 /// <returns></returns>
 public void Replace(IEnumerable <LightDoctorDto> doubloons, LightDoctorDto withDoctor)
 {
     this.Replace(doubloons, withDoctor, null);
 }
コード例 #12
0
 /// <summary>
 /// Gets the doubloons of the specified doctor.
 /// </summary>
 /// <param name="doctor">The doctor that will be useds to find doubloons.</param>
 /// <param name="query">preloaded query to help optimisation.</param>
 /// <returns>
 /// An enumeration of doctor that are doubloons with the specified doctor
 /// </returns>
 public IEnumerable <LightDoctorDto> GetDoubloonsOf(LightDoctorDto doctor)
 {
     return(this.GetDoubloonsOf(doctor, null));
 }
コード例 #13
0
 /// <summary>
 /// Removes the link that existed between the specified patient and the specified doctor.
 /// </summary>
 /// <exception cref="EntityNotFoundException">If there's no link between the doctor and the patient</exception>
 /// <param name="patient">The patient.</param>
 /// <param name="doctor">The doctor.</param>
 public void RemoveDoctorFor(LightPatientDto patient, LightDoctorDto doctor)
 {
     new Remover(this.Session).Remove(doctor, patient);
 }
コード例 #14
0
ファイル: DoctorAction.cs プロジェクト: thabet-fix/ndoctor
 protected DoctorAction(IPatientDataComponent component, LightPatientDto patient, LightDoctorDto doctor)
     : base(component, patient)
 {
     this.Doctor = doctor;
 }