public async Task <IActionResult> Edit(int id, [Bind("DoctorId,AvailableTime,AvailabilityId")] DoctorAvailability doctorAvailability)
        {
            if (id != doctorAvailability.AvailabilityId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(doctorAvailability);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DoctorAvailabilityExists(doctorAvailability.AvailabilityId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["DoctorId"] = new SelectList(_context.Doctor, "DoctorId", "DoctorEmail", doctorAvailability.DoctorId);
            return(View(doctorAvailability));
        }
Exemple #2
0
 /// <summary>
 /// Checks doctor availability
 /// </summary>
 /// <param name="doctorAvailability"></param>
 /// <returns></returns>
 public bool MarkAvailability(List <DoctorAvailability> doctorAvailability)
 {
     using (DbContextTransaction dbTransaction = db.Database.BeginTransaction())
     {
         try
         {
             foreach (var item in doctorAvailability)
             {
                 DoctorAvailability availability = db.DoctorAvailability.SingleOrDefault(t => t.Date == item.Date && t.UserId == item.UserId);
                 if (availability != null)
                 {
                     availability.FromTime = item.FromTime;
                     availability.ToTime   = item.ToTime;
                 }
                 else
                 {
                     db.DoctorAvailability.Add(item);
                 }
                 db.SaveChanges();
             }
             dbTransaction.Commit();
             return(true);
         }
         catch (Exception e)
         {
             var ravenClient = new RavenClient("https://[email protected]/1820886");
             ravenClient.Capture(new SentryEvent(e));
             dbTransaction.Rollback();
             return(false);
         }
     }
 }
        public ActionResult DeleteConfirmed(int id)
        {
            DoctorAvailability doctorAvailability = db.DoctorAvailabilities.Find(id);

            db.DoctorAvailabilities.Remove(doctorAvailability);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public string getDrAvailableTime(string username, string appointmentDate)
        {
            List <DoctorAvailability> availability = db.doctorAvailability.Where(co => co.username == username).ToList();

            if (availability == null)
            {
                return("");
            }

            List <Appointment> appointments = db.appointment.Where(ap => ap.drName == username && ap.appointmentDate == appointmentDate).ToList();


            DoctorAvailability doctorAvailability = null;
            var jsonString = "";

            if (availability != null && availability.Count() > 0)
            {
                doctorAvailability = availability.First();

                int                    startTime        = doctorAvailability.startTime;
                int                    endTime          = doctorAvailability.endTime;
                string                 drName           = doctorAvailability.username;
                bool                   isBooked         = false;
                AvailabilityDAL        availabilityDAL  = new AvailabilityDAL();
                List <AvailabilityDAL> availabilityDALs = new List <AvailabilityDAL>();
                if (startTime < endTime)
                {
                    for (int i = startTime; i <= endTime; i++)
                    {
                        isBooked = isBookedAppointment(appointments, i);

                        availabilityDAL = new AvailabilityDAL(i, drName, isBooked);
                        availabilityDALs.Add(availabilityDAL);
                    }
                }
                else
                {
                    for (int i = startTime; i < 24; i++)
                    {
                        isBooked = isBookedAppointment(appointments, i);

                        availabilityDAL = new AvailabilityDAL(i, drName, isBooked);
                        availabilityDALs.Add(availabilityDAL);
                    }
                    for (int i = 0; i <= endTime; i++)
                    {
                        isBooked = isBookedAppointment(appointments, i);

                        availabilityDAL = new AvailabilityDAL(i, drName, isBooked);
                        availabilityDALs.Add(availabilityDAL);
                    }
                }

                jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(availabilityDALs);
            }
            return(jsonString);
        }
 public ActionResult Edit([Bind(Include = "Id,dr_id,avail_date,time,status")] DoctorAvailability doctorAvailability)
 {
     if (ModelState.IsValid)
     {
         db.Entry(doctorAvailability).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.dr_id = new SelectList(db.doctors, "Id", "Name", doctorAvailability.dr_id);
     return(View(doctorAvailability));
 }
        public async Task <IActionResult> Create([Bind("DoctorId,AvailableTime,AvailabilityId")] DoctorAvailability doctorAvailability)
        {
            if (ModelState.IsValid)
            {
                _context.Add(doctorAvailability);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["DoctorId"] = new SelectList(_context.Doctor, "DoctorId", "DoctorEmail", doctorAvailability.DoctorId);
            return(View(doctorAvailability));
        }
        public ActionResult Create([Bind(Include = "Id,dr_id,avail_date,time,status")] DoctorAvailability doctorAvailability)
        {
            if (ModelState.IsValid)
            {
                db.DoctorAvailabilities.Add(doctorAvailability);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.dr_id = new SelectList(db.doctors, "Id", "Name", doctorAvailability.dr_id);
            return(View(doctorAvailability));
        }
Exemple #8
0
 public bool AddDoctorAvailability(DoctorAvailability doctorAvailability)
 {
     try
     {
         db.DoctorAvailability.Add(doctorAvailability);
         db.SaveChanges();
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
Exemple #9
0
        public ActionResult AddDoctor(DoctorRegisterViewModel model, string returnUrl)
        {
            if (Session["userId"] == null)
            {
                return(Redirect("~"));
            }
            Users user = new Users();

            user.RoleId = Convert.ToInt32(Roles.Doctor);
            AutoMapper.Mapper.Map(model, user);
            user.CreatedBy = (int)Session["userId"];
            DoctorAvailability availability = new DoctorAvailability();
            DoctorFee          doctorFee    = new DoctorFee();

            doctorFee.Fee = model.Fee;

            List <DoctorSpecialization> doctorSpecialization = new List <DoctorSpecialization>();

            foreach (var item in model.Specializations)
            {
                DoctorSpecialization DoctorSpecialization = new DoctorSpecialization();
                DoctorSpecialization.SpecializationId = (int)item;
                doctorSpecialization.Add(DoctorSpecialization);
            }
            try
            {
                if (new Accounts().AddUser(user, availability, doctorSpecialization, doctorFee))
                {
                    return(Redirect("~/Admin/Doctors"));
                }
                else
                {
                    return(RedirectToAction("~/Admin/Doctors/Add"));
                }
            }
            catch (EmailAlreadyExistsEx ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(model));
            }
            catch (PhoneAlreadyExistsEx ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(model));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Unable to add doctor");
                return(View(model));
            }
        }
Exemple #10
0
        public AppointmentTime PreviousToScheduleTime   = null; // = new AppointmentTime();
        public void ToAvailabilityList()
        {
            DoctorAvailability doctorAvailability;

            for (int i = 0; i < Availability.Length; i += 3)
            {
                doctorAvailability          = new DoctorAvailability();
                doctorAvailability.Date     = DateTime.Parse(Availability[i]);
                doctorAvailability.FromTime = byte.Parse(Availability[i + 1]);
                doctorAvailability.ToTime   = byte.Parse(Availability[i + 2]);
                doctorAvailability.UserId   = DoctorId;
                AvailabilityList.Add(doctorAvailability);
            }
        }
        // GET: DoctorAvailabilities/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DoctorAvailability doctorAvailability = db.DoctorAvailabilities.Find(id);

            if (doctorAvailability == null)
            {
                return(HttpNotFound());
            }
            return(View(doctorAvailability));
        }
        // GET: DoctorAvailabilities/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DoctorAvailability doctorAvailability = db.DoctorAvailabilities.Find(id);

            if (doctorAvailability == null)
            {
                return(HttpNotFound());
            }
            ViewBag.dr_id = new SelectList(db.doctors, "Id", "Name", doctorAvailability.dr_id);
            return(View(doctorAvailability));
        }
        public String setDoctorTiming(int startTime, int endTime)
        {
            string             username           = Request.Cookies["username"].Value;
            DoctorAvailability doctorAvailability = new DoctorAvailability(username, startTime, endTime);

            try
            {
                db.doctorAvailability.AddOrUpdate(doctorAvailability);
                db.SaveChanges();
                return("Successfuly Updated!");
            }
            catch (Exception ex)
            {
                return("This username already exists");
            }
        }
        public ActionResult Create([Bind(Include = "Id,dr_id,First_Name,Last_Name,Email_id,contact_no,avail_id,Date ")] book_an_appointment book_an_appointment)
        {
            if (ModelState.IsValid)
            {
                db.book_an_appointment.Add(book_an_appointment);
                db.SaveChanges();

                DoctorAvailability doctorAvailability = db.DoctorAvailabilities.Find(book_an_appointment.avail_id);
                doctorAvailability.status          = "Book";
                db.Entry(doctorAvailability).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("SuccessMessage"));
            }

            ViewBag.dr_id    = new SelectList(db.doctors, "Id", "Name", book_an_appointment.dr_id);
            ViewBag.avail_id = new SelectList(db.DoctorAvailabilities, "Id", "time", book_an_appointment.avail_id);
            return(View(book_an_appointment));
        }
Exemple #15
0
 public AppointmentTime GetExistingToSchedule(int doctorId, DateTime date)
 {
     try
     {
         DoctorAvailability schedule = db.DoctorAvailability.SingleOrDefault(t => t.UserId == doctorId && t.Date == date.Date);
         var timeSlots = db.AppointmentTime.ToList();
         foreach (var item in timeSlots)
         {
             if ((int)item.Id == (int)schedule.ToTime)
             {
                 return(item);
             }
         }
         return(null);
     }
     catch (Exception e)
     {
         var ravenClient = new RavenClient("https://[email protected]/1820886");
         ravenClient.Capture(new SentryEvent(e));
         return(null);
     }
 }
        public async Task <IActionResult> DeleteConfirmed(int id)
        {
            var appointment = await _context.Appointment.FindAsync(id);


            var appointment1 = from p in _context.Appointment
                               where p.ApptId == id
                               select p;
            var apptid = appointment1.ToList();


            var misusecount = from p in _context.MisusedUser
                              where p.UserEmail == User.Identity.Name
                              select p.Misusedcount;
            int count = misusecount.FirstOrDefault();

            //Add the user to misused user database

            if (User.IsInRole("Patient"))
            {
                if (!UserExists(User.Identity.Name))
                {
                    var newuser = new MisusedUser {
                        UserEmail = User.Identity.Name, Misusedcount = 0
                    };
                    _context.MisusedUser.Add(newuser);
                    await _context.SaveChangesAsync();
                }
            }
            //Update misuse count or deny permission to cancel appointment based on misuse count.
            if (User.IsInRole("Patient"))
            {
                if (count > 5)
                {
                    return(View("PermissionDenied"));
                }
                else
                {
                    count += 1;
                    var findemail = await _context.MisusedUser.FindAsync(User.Identity.Name);

                    findemail.Misusedcount = count;
                    await _context.SaveChangesAsync();
                }
            }


            foreach (var x in apptid)
            {
                //Remove from unvailable time
                var appointment_context = _context.DoctorUnavailability.Where(a => a.Unavailable == x.ApptDate && a.DoctorId == x.DoctorId).FirstOrDefault();
                _context.DoctorUnavailability.Remove(appointment_context);
                await _context.SaveChangesAsync();

                //Add to available time

                var addtime = new DoctorAvailability {
                    DoctorId = x.DoctorId, AvailableTime = x.ApptDate
                };
                _context.DoctorAvailability.Add(addtime);
                await _context.SaveChangesAsync();
            }



            _context.Appointment.Remove(appointment);
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
        public IHttpActionResult TimeDetails(DoctorAvailability time)
        {
            string Hospital = time.Hospital;
            string ID       = time.ID;
            int    temp;
            string fullname;

            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = "Data Source=DESKTOP-3SOIUD0\\SQLEXPRESS;Initial Catalog=Eclinic;Integrated Security=True;";

                conn.Open();
                string     checkuname = "select count(*) from Hospital where NID = '" + ID + "' AND HospitalName ='" + Hospital + "'";
                SqlCommand com        = new SqlCommand(checkuname, conn);
                temp = Convert.ToInt32(com.ExecuteScalar().ToString());
                conn.Close();
                conn.Open();
                string     query1 = "select FName from NormalUser where NID = '" + ID + "'";
                SqlCommand Fname  = new SqlCommand(query1, conn);
                string     frist  = Fname.ExecuteScalar().ToString().Replace(" ", "");
                conn.Close();
                conn.Open();
                string     query2 = "select LName from NormalUser where NID = '" + ID + "'";
                SqlCommand Lname  = new SqlCommand(query2, conn);
                string     Last   = Lname.ExecuteScalar().ToString().Replace(" ", "");
                conn.Close();
                fullname = string.Concat("Dr", " ", frist, " ", Last);
            }
            if (temp == 0)
            {
                string query = "EXEC Add_DeatailsToHospital '" + ID + "','" + Hospital + "'";
                int    r     = connectionProvider.CreateSomething(query);
            }

            DateTime Sday = Convert.ToDateTime(time.Sday);
            DateTime Eday = Convert.ToDateTime(time.Eday);

            string   Mon    = time.Mon;
            DateTime MStime = Convert.ToDateTime(time.MStime);
            DateTime MEtime = Convert.ToDateTime(time.MEtime);

            string   Tue    = time.Tue;
            DateTime TStime = Convert.ToDateTime(time.TStime);
            DateTime TEtime = Convert.ToDateTime(time.TEtime);

            string   Wed    = time.Wed;
            DateTime WStime = Convert.ToDateTime(time.WStime);
            DateTime WEtime = Convert.ToDateTime(time.WEtime);

            string   Thu     = time.Thu;
            DateTime THStime = Convert.ToDateTime(time.THStime);
            DateTime THEtime = Convert.ToDateTime(time.THEtime);

            string   Fri    = time.Fri;
            DateTime FStime = Convert.ToDateTime(time.FStime);
            DateTime FEtime = Convert.ToDateTime(time.FEtime);

            string   Sat     = time.Sat;
            DateTime SAStime = Convert.ToDateTime(time.SAStime);
            DateTime SAEtime = Convert.ToDateTime(time.SAEtime);

            string   Sun     = time.Sun;
            DateTime SUStime = Convert.ToDateTime(time.SUStime);
            DateTime SUEtime = Convert.ToDateTime(time.SUEtime);
            int      dayvalue;
            string   rangebegin;
            string   rangeend;
            string   rangerbegin1;
            string   a = " to ";


            for (DateTime d = Sday; d <= Eday; d = d.AddDays(1))
            {
                DateTime date = d.Date;
                dayvalue = ((int)d.DayOfWeek);
                switch (dayvalue)
                {
                case 1:
                    for (DateTime t = MStime; t < MEtime;)
                    {
                        rangebegin   = Convert.ToString(t.TimeOfDay);
                        t            = t.AddMinutes(30);
                        rangeend     = Convert.ToString(t.TimeOfDay);
                        rangerbegin1 = string.Concat(rangebegin, a);
                        string TimeSlot = string.Concat(rangerbegin1, rangeend);
                        string query2   = "EXEC Add_Available'" + fullname + "','" + date + "','" + TimeSlot + "','" + Hospital + "'";
                        int    r        = connectionProvider.CreateSomething(query2);
                    }
                    break;

                case 2:
                    for (DateTime t = TStime; t < TEtime;)
                    {
                        rangebegin   = Convert.ToString(t.TimeOfDay);
                        t            = t.AddMinutes(30);
                        rangeend     = Convert.ToString(t.TimeOfDay);
                        rangerbegin1 = string.Concat(rangebegin, a);
                        string TimeSlot = string.Concat(rangerbegin1, rangeend);
                        string query2   = "EXEC Add_Available'" + fullname + "','" + date + "','" + TimeSlot + "','" + Hospital + "'";
                        int    r        = connectionProvider.CreateSomething(query2);
                    }
                    break;

                case 3:
                    for (DateTime t = WStime; t < WEtime;)
                    {
                        rangebegin   = Convert.ToString(t.TimeOfDay);
                        t            = t.AddMinutes(30);
                        rangeend     = Convert.ToString(t.TimeOfDay);
                        rangerbegin1 = string.Concat(rangebegin, a);
                        string TimeSlot = string.Concat(rangerbegin1, rangeend);
                        string query2   = "EXEC Add_Available'" + fullname + "','" + date + "','" + TimeSlot + "','" + Hospital + "'";
                        int    r        = connectionProvider.CreateSomething(query2);
                    }
                    break;

                case 4:
                    for (DateTime t = THStime; t < THEtime;)
                    {
                        rangebegin   = Convert.ToString(t.TimeOfDay);
                        t            = t.AddMinutes(30);
                        rangeend     = Convert.ToString(t.TimeOfDay);
                        rangerbegin1 = string.Concat(rangebegin, a);
                        string TimeSlot = string.Concat(rangerbegin1, rangeend);
                        string query2   = "EXEC Add_Available'" + fullname + "','" + date + "','" + TimeSlot + "','" + Hospital + "'";
                        int    r        = connectionProvider.CreateSomething(query2);
                    }
                    break;

                case 5:
                    for (DateTime t = FStime; t < FEtime;)
                    {
                        rangebegin   = Convert.ToString(t.TimeOfDay);
                        t            = t.AddMinutes(30);
                        rangeend     = Convert.ToString(t.TimeOfDay);
                        rangerbegin1 = string.Concat(rangebegin, a);
                        string TimeSlot = string.Concat(rangerbegin1, rangeend);
                        string query2   = "EXEC Add_Available'" + fullname + "','" + date + "','" + TimeSlot + "','" + Hospital + "'";
                        int    r        = connectionProvider.CreateSomething(query2);
                    }
                    break;

                case 6:
                    for (DateTime t = SAStime; t < SAEtime;)
                    {
                        rangebegin   = Convert.ToString(t.TimeOfDay);
                        t            = t.AddMinutes(30);
                        rangeend     = Convert.ToString(t.TimeOfDay);
                        rangerbegin1 = string.Concat(rangebegin, a);
                        string TimeSlot = string.Concat(rangerbegin1, rangeend);
                        string query2   = "EXEC Add_Available'" + fullname + "','" + date + "','" + TimeSlot + "','" + Hospital + "'";
                        int    r        = connectionProvider.CreateSomething(query2);
                    }
                    break;

                case 0:
                    for (DateTime t = SUStime; t < SUEtime;)
                    {
                        rangebegin   = Convert.ToString(t.TimeOfDay);
                        t            = t.AddMinutes(30);
                        rangeend     = Convert.ToString(t.TimeOfDay);
                        rangerbegin1 = string.Concat(rangebegin, a);
                        string TimeSlot = string.Concat(rangerbegin1, rangeend);
                        string query2   = "EXEC Add_Available'" + fullname + "','" + date + "','" + TimeSlot + "','" + Hospital + "'";
                        int    r        = connectionProvider.CreateSomething(query2);
                    }
                    break;
                }
            }

            return(Ok());
        }