public ActionResult AddVisit(DoctorFreeTimeViewModel model)
        {
            Patient  patient  = db.PatientSet.Find(model.PatientId);
            WorkTime record   = new WorkTime();
            FreeTime freeTime = db.FreeTimeSet.Find(model.FreeTimeId);
            Doctor   doctor   = db.DoctorSet.Find(model.DoctorId);

            if (patient != null)
            {
                if (ModelState.IsValid && model.DoctorId != -1 && model.FreeTimeId != -1)
                {
                    record.Doctor    = doctor;
                    record.StartTime = freeTime.StartTime;
                    record.Patient   = patient;

                    patient.WorkTime.Add(record);

                    db.FreeTimeSet.Remove(freeTime);

                    db.Entry(patient).State = EntityState.Modified;
                    db.SaveChanges();
                    return(RedirectToAction("Visits", patient));
                }
            }
            ViewBag.Message = "Выберите врача и время";
            return(RedirectToAction("Visits", patient));
        }
 public FreeTimeDTO(FreeTime f)
 {
     this.Id        = f.Id;
     this.DayInWeek = f.DayInWeek;
     this.StartTime = f.StartTime;
     this.EndTime   = f.EndTime;
 }
        public ActionResult DeleteConfirmed(int id)
        {
            FreeTime freeTime = db.FreeTimeSet.Find(id);

            db.FreeTimeSet.Remove(freeTime);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #4
0
 public FreeTimeEntity(FreeTime freeTime)
 {
     Id        = freeTime.Id;
     UserId    = freeTime.UserId;
     StartTime = freeTime.StartTime.ToString("yyyy-MM-dd'T'HH:mm:ss.SSS");
     EndTime   = freeTime.EndTime.ToString("yyyy-MM-dd'T'HH:mm:ss.SSS");
     GroupId   = freeTime.GroupId;
 }
 public ActionResult Edit([Bind(Include = "Id,StartTime")] FreeTime freeTime)
 {
     if (ModelState.IsValid)
     {
         db.Entry(freeTime).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(freeTime));
 }
        public ActionResult Create([Bind(Include = "Id,StartTime")] FreeTime freeTime)
        {
            if (ModelState.IsValid)
            {
                db.FreeTimeSet.Add(freeTime);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(freeTime));
        }
Пример #7
0
        public async Task SaveTime()
        {
            try
            {
                FreeTime freeTime = new FreeTime();
                freeTime.Day       = arrayDays[day];
                freeTime.StartTime = StartTime.Time.TotalMinutes;
                freeTime.EndTime   = EndTime.Time.TotalMinutes;
                if (freeTime.EndTime <= freeTime.StartTime)
                {
                    await DisplayAlert("Error", "La fecha de cierre no puede ser menor a la hora de inicio", "Acepar");

                    return;
                }

                bool answer = await DisplayAlert("Verificación", string.Format("Seguro que desea guardar el tiempo: \n {0}, {1} - {2} ?", freeTime.Day, StartTime.Time, EndTime.Time), "Aceptar", "Cancelar");

                if (!answer)
                {
                    return;
                }
                using (var data = new DataAccess())
                {
                    List <FreeTime> CurretFreeTime = data.GetFreeTime(freeTime.Day);
                    foreach (FreeTime free in CurretFreeTime)
                    {
                        if (freeTime.StartTime >= free.StartTime && freeTime.EndTime <= free.EndTime)
                        {
                            return;
                        }
                        if (freeTime.StartTime <= free.EndTime && freeTime.EndTime > free.EndTime)
                        {
                            free.EndTime = freeTime.EndTime;
                            data.Update(free);
                            return;
                        }
                        if (freeTime.StartTime < free.StartTime && freeTime.EndTime >= free.StartTime)
                        {
                            free.StartTime = freeTime.StartTime;
                            data.Update(free);
                            return;
                        }
                    }
                    Label lblMensaje = new Label();
                    lblMensaje.IsVisible = true;
                    data.Insert(freeTime);
                    data.Dispose();
                }
            }
            catch (Exception e)
            {
                DisplayAlert("Error", e.Message, "aceptar");
            }
        }
Пример #8
0
 public ActionResult Edit([Bind(Include = "Id,StartTime")] FreeTime freeTime)
 {
     freeTime = db.FreeTimeSet.Find(freeTime.Id);
     if (freeTime != null)
     {
         db.Entry(freeTime).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(freeTime));
 }
Пример #9
0
        public IHttpActionResult AddFreeTime(FreeTimeDTO freeTimeDTO)//[FromBody]Members NewMember
        {
            FreeTime freeTime = freeTimeDTO.ConvertToFreeTime();

            freeTime.StartTime = freeTimeDTO.StartTime;
            freeTime.DayInWeek = freeTimeDTO.DayInWeek;
            freeTime.EndTime   = freeTimeDTO.EndTime;
            DB.FreeTime.Add(freeTime);
            DB.SaveChanges();
            freeTime = DB.FreeTime.First(x => x.StartTime == freeTime.StartTime && x.EndTime == freeTime.EndTime && x.DayInWeek == freeTime.DayInWeek);
            return(Ok(freeTime.Id));
        }
Пример #10
0
        public static FreeTime ToFreeTime(this BarberSchedules schedule, DateTimeOffset date)
        {
            var startTime = date.SetTime(schedule.StartTimeMinute);
            var endTime   = date.SetTime(schedule.EndTimeMinute);

            var freeTime = new FreeTime
            {
                Start = new TimePoint(startTime),
                End   = new TimePoint(endTime)
            };

            return(freeTime);
        }
        // GET: FreeTimes/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            FreeTime freeTime = db.FreeTimeSet.Find(id);

            if (freeTime == null)
            {
                return(HttpNotFound());
            }
            return(View(freeTime));
        }
Пример #12
0
        public IActionResult addPerson([FromBody] FreeTime freeTime)
        {
            //validate data
            if (!DiaryValidation.isFreeTimeLegal(freeTime, diaryService))
            {
                dynamic error = new JObject();
                error.ErrorCode   = "UNAUTHORIZED_API_METHOD";
                error.Description = "illegal data";

                return(Json(JsonConvert.SerializeObject(error)));
            }

            diaryService.addName(freeTime);
            return(Json(diaryService.getJSON()));
        }
Пример #13
0
 public bool Insert(FreeTime model)
 {
     try
     {
         using (var context = new YueDongEntities())
         {
             context.FreeTimes.Add(model);
             return(context.SaveChanges() > 0);
         }
     }
     catch (Exception e)
     {
     }
     return(false);
 }
Пример #14
0
 public bool DeleteByUserIdAndWeekTime(FreeTime time)
 {
     try
     {
         using (var context = new YueDongEntities())
         {
             var result = context.FreeTimes.Where(a => a.Status > 0 && a.UserId == time.UserId && time.Week == a.Week.Value && a.StartTime.Value.ToString("HH:mm") == time.StartTime.Value.ToString("HH:mm") && a.EndTime.Value.ToString("HH:mm") == time.EndTime.Value.ToString("HH:mm"));
             if (result.Any())
             {
                 result.FirstOrDefault().Status = 0;
             }
             return(context.SaveChanges() > 0);
         }
     }
     catch (Exception e)
     {
     }
     return(false);
 }
Пример #15
0
        public IHttpActionResult RemoveFreeTime([FromBody] FreeTime time)
        {
            var result = new BaseResult();

            result.ResultCode    = "1";
            result.ResultMessage = "Error";
            if (time.UserId == null)
            {
                result.ResultMessage = "用户不能为空";
                return(Ok(result));
            }
            if (time.Week == null)
            {
                result.ResultMessage = "星期不能为空";
                return(Ok(result));
            }
            if (time.StartTime == null)
            {
                result.ResultMessage = "开始时间不能为空";
                return(Ok(result));
            }
            if (time.EndTime == null)
            {
                result.ResultMessage = "结束时间不能为空";
                return(Ok(result));
            }
            time.Id      = Guid.NewGuid();
            time.Status  = 1;
            time.Version = 1;
            var inserttime = new FreeTimeDAL().DeleteByUserIdAndWeekTime(time);

            if (inserttime)
            {
                result.ResultData    = time;
                result.ResultMessage = "Success";
                result.ResultCode    = "0";
            }
            else
            {
                result.ResultMessage = "修改成功";
            }
            return(Ok(result));
        }
Пример #16
0
        static void MakeArtifacts()
        {
            //var types = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Namespace.StartsWith("DiscipleClan.Artifacts") && !t.Name.Contains("<>"));

            //foreach (var relic in types) { Trainworks.Trainworks.Log(BepInEx.Logging.LogLevel.All, "Artifact Name: " + relic.Name);  Make(relic); }

            FreeTime.Make();
            // EmberOnDivine.Make();
            GoldOverTime.Make();
            GravityOnAscend.Make();
            RewindFirstSpell.Make();
            PyreDamageOnEmber.Make();
            QuickAndDirty.Make();
            RageAgainstThePyre.Make();
            RefundXCosts.Make();
            // SeersBoostDivine.Make();
            FirstBuffExtraStack.Make();
            GoldOnPyreKill.Make();
            HighestHPToFront.Make();
        }
Пример #17
0
        /// <summary>
        /// Метод, реализующий заполнение таблицы с возможными временами готовности заказов
        /// </summary>
        /// <param name="Interval">Величина интервала</param>
        /// <param name="Dishes">Количество блюд в указанный интервал</param>
        public void SetFreeTime(int Interval, int Dishes)
        {
            using (var db = new Contexts())
            {
                //Заполняем информацию по интервалам для каждого дня
                foreach (var day in db.DayWork)
                {
                    string start_h = day.StartDayHour;
                    string start_m = day.StartDayMin;
                    int    st_h    = Convert.ToInt32(start_h);
                    int    st_m    = Convert.ToInt32(start_m);
                    int    fin_h   = Convert.ToInt32(day.EndDayHour);
                    int    fin_m   = Convert.ToInt32(day.EndDayMin);

                    //Повторяем пока текущий час меньше финального или, если уже равны, то сравниваем минуты
                    while (st_h < fin_h || st_h == fin_h && st_m <= fin_m)
                    {
                        FreeTime tmp = new FreeTime();
                        tmp.cur_amount = 0;
                        tmp.DayWork    = day;
                        tmp.max_amount = Dishes;
                        tmp.Time       = start_h + ":" + start_m;
                        db.FreeTime.Add(tmp);

                        //Рассчитываем следующее доступное время
                        st_m    = st_m + Interval;
                        st_h    = st_h + st_m / 60;
                        st_m    = st_m % 60;
                        start_h = st_h.ToString();
                        start_m = st_m.ToString();

                        //Если число минут меньше десяти, то в начале нужно приписать 0
                        if (st_m < 10)
                        {
                            start_m = "0" + start_m;
                        }
                    }
                }
                db.SaveChanges();
            }
        }
Пример #18
0
        public async Task <IActionResult> PostFreeTime([FromBody] FreeTime freeTime)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            DateTime localDate = DateTime.Now;

            if (localDate > freeTime.TimeStart || localDate > freeTime.TimeEnd)
            {
                return(BadRequest("time is already over"));
            }


            var claims    = User.Claims;
            var cla       = claims.ToList();
            var idTrainee = int.Parse(cla[1].Value);

            var alreadyis = _context.FreeTime.Where(l => ((l.TimeStart >= freeTime.TimeStart && l.TimeEnd >= freeTime.TimeEnd && freeTime.TimeEnd >= l.TimeStart) ||
                                                          (l.TimeStart <= freeTime.TimeStart && l.TimeEnd >= freeTime.TimeEnd) ||
                                                          (l.TimeStart <= freeTime.TimeStart && l.TimeEnd >= freeTime.TimeStart && l.TimeEnd <= freeTime.TimeEnd) ||
                                                          (l.TimeStart >= freeTime.TimeStart && l.TimeEnd <= freeTime.TimeEnd) ||
                                                          (l.TimeStart == freeTime.TimeStart && l.TimeEnd == freeTime.TimeEnd)) && l.FkTraineeidTrainee == idTrainee)
                            .Select(x => x.IdFreeTime).Count();

            if (alreadyis > 0)
            {
                return(BadRequest("time is already written"));
            }
            if (freeTime.TimeStart >= freeTime.TimeEnd)
            {
                return(BadRequest("end time is bigger then start time"));
            }
            freeTime.FkTraineeidTrainee = idTrainee;
            _context.FreeTime.Add(freeTime);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetFreeTime", new { id = freeTime.IdFreeTime }, freeTime));
        }
Пример #19
0
        public ActionResult DeleteFreeTime(int doctorId, int id)
        {
            Doctor   doctor = db.DoctorSet.Find(doctorId);
            FreeTime record = db.FreeTimeSet.Find(id);

            if (ModelState.IsValid)
            {
                doctor.FreeTime.Remove(record);
                db.FreeTimeSet.Remove(record);
                db.SaveChanges();


                ViewBag.FreeTimeList = new SelectList(doctor.FreeTime, "Id", "StartTime");
                ViewBag.WorkTimeList = new SelectList(doctor.WorkTime, "Id", "StartTime");
                foreach (WorkTime wt in doctor.WorkTime)
                {
                    ViewData[wt.StartTime.ToString()] = wt.Patient.FIO;
                }
                return(RedirectToAction("Edit", doctor));
            }
            return(View(doctor));
        }
Пример #20
0
 public bool Update(FreeTime model)
 {
     try
     {
         using (var context = new YueDongEntities())
         {
             var result = context.FreeTimes.FirstOrDefault(a => a.Id == model.Id);
             if (result != null)
             {
                 result.StartTime  = model.StartTime;
                 result.EndTime    = model.EndTime;
                 result.Week       = model.Week;
                 result.UpdateTime = model.UpdateTime;
             }
             return(context.SaveChanges() > 0);
         }
     }
     catch (Exception e)
     {
     }
     return(false);
 }
Пример #21
0
        public ActionResult AddFreeTime(int doctorId, [Bind(Include = "StartTime")] FreeTime freeTime)
        {
            Doctor doctor = db.DoctorSet.Find(doctorId);

            freeTime.Doctor = doctor;


            if (ModelState.IsValid)
            {
                freeTime = db.FreeTimeSet.Add(freeTime);
                doctor.FreeTime.Add(freeTime);
                db.SaveChanges();
                ViewBag.FreeTimeList = new SelectList(doctor.FreeTime, "Id", "StartTime");
                ViewBag.WorkTimeList = new SelectList(doctor.WorkTime, "Id", "StartTime");
                foreach (WorkTime wt in doctor.WorkTime)
                {
                    ViewData[wt.StartTime.ToString()] = wt.Patient.FIO;
                }

                return(RedirectToAction("Edit", doctor));
            }
            ViewBag.doctorId = doctorId;
            return(View());
        }
Пример #22
0
        public async Task <IActionResult> PutFreeTime([FromRoute] int id, [FromBody] FreeTime freeTime)
        {
            var claims    = User.Claims;
            var cla       = claims.ToList();
            var idTrainee = int.Parse(cla[1].Value);


            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var check = _context.FreeTime.Where(l => (l.IdFreeTime == id && l.FkTraineeidTrainee == idTrainee)).Select(x => x.IdFreeTime).Count();

            if (check < 1)
            {
                return(Unauthorized());
            }



            freeTime.IdFreeTime         = id;
            freeTime.FkTraineeidTrainee = idTrainee;
            DateTime localDate = DateTime.Now;

            if (localDate > freeTime.TimeStart || localDate > freeTime.TimeEnd)
            {
                return(BadRequest("time is already over"));
            }

            var alreadyis = _context.FreeTime.Where(l => ((l.TimeStart >= freeTime.TimeStart && l.TimeEnd >= freeTime.TimeEnd && freeTime.TimeEnd >= l.TimeStart) ||
                                                          (l.TimeStart <= freeTime.TimeStart && l.TimeEnd >= freeTime.TimeEnd) ||
                                                          (l.TimeStart <= freeTime.TimeStart && l.TimeEnd >= freeTime.TimeStart && l.TimeEnd <= freeTime.TimeEnd) ||
                                                          (l.TimeStart >= freeTime.TimeStart && l.TimeEnd <= freeTime.TimeEnd) ||
                                                          (l.TimeStart == freeTime.TimeStart && l.TimeEnd == freeTime.TimeEnd)) && l.FkTraineeidTrainee == idTrainee)
                            .Select(x => x.IdFreeTime).Count();

            if (alreadyis > 1)
            {
                return(BadRequest("time is already busy"));
            }
            if (freeTime.TimeStart >= freeTime.TimeEnd)
            {
                return(BadRequest("end time is bigger then start time"));
            }

            _context.Entry(freeTime).State = EntityState.Modified;
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FreeTimeExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Ok(freeTime));
        }
Пример #23
0
        private static Boolean Intersection3(KeyValuePair<FreeTime, String> first, KeyValuePair<FreeTime, String> second)
        {
            //Console.WriteLine("inside intesection3");

            int result1 = DateTime.Compare(first.Key.Start, second.Key.End);
            int result2 = DateTime.Compare(first.Key.End, second.Key.Start);
            int result3 = DateTime.Compare(first.Key.Start, second.Key.Start);
            int result4 = DateTime.Compare(first.Key.End, second.Key.End);
            String calName;
            Boolean equal = (result3 == 0 && result4 == 0);

            if (!(result1 >= 0) && !(result2 <= 0) && !equal)
            {
                // --------------
                if (result3 != 0 && result4 == 0 && !first.Value.Equals(second.Value))
                {
                   // Console.WriteLine("intersction3 1111111111111   ");
                    FreeTime f = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.Start.Ticks, second.Key.Start.Ticks)));
                    if (result3 < 0) calName = first.Value;
                    else calName = second.Value;
                    if (FinalFreeBusy.Count != 0)
                    {
                        if (!FinalFreeBusy.ContainsKey(f))
                        {
                            FinalFreeBusy.Add(f, calName);
                            //Console.WriteLine("Added " + f.Start + " " + f.End + " " + calName);
                        }
                        else
                        {
                            //Console.WriteLine("already contained " + f.Start + " " + f.End + " " + FinalFreeBusy[f]);
                            //Console.WriteLine("entered the new code ");
                            //if (!FinalFreeBusy[f].Equals(calName))
                            //{
                            //    Console.WriteLine("entered the new if statement ");
                            //    FinalFreeBusy.Remove(f);
                            //    FinalFreeBusy.Add(f, calName);
                            //    Console.WriteLine("Added " + f.Start + " " + f.End + " " + calName);
                            //}

                            if (FinalFreeBusy[f].IndexOf(calName) == -1)
                            {
                                FinalFreeBusy[f] = FinalFreeBusy[f] + " " + calName;
                                FinalFreeBusy[f]=RemoveDuplicateWords(FinalFreeBusy[f] );
                            }
                               


                        }
                            

                    }
                    else
                    {
                        if (!FinalFreeBusy.ContainsKey(f)) FinalFreeBusy.Add(f, calName);
                        //Console.WriteLine("Added " + f.Start + " " + f.End + " " + calName);
                    }





                   // Console.WriteLine(" new intersction3 1111111111111   ");
                    FreeTime f2 = new FreeTime(new DateTime(Math.Max(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));
                    if (result3 < 0) calName = second.Value;
                    else calName = first.Value;
                    if (FinalFreeBusy.Count != 0)
                    {
                        if (!FinalFreeBusy.ContainsKey(f2))
                        {
                            FinalFreeBusy.Add(f2, RemoveDuplicateWords(second.Value + " " + first.Value));
                            //Console.WriteLine("Added " + f2.Start + " " + f2.End + " " + RemoveDuplicateWords(second.Value + " " + first.Value));
                        }
                        else
                        {
                           // Console.WriteLine("already contained " + f2.Start + " " + f2.End + " " + FinalFreeBusy[f2]);
                           // Console.WriteLine("entered the new code ");
                            //if (!FinalFreeBusy[f2].Equals(RemoveDuplicateWords(second.Value + " " + first.Value)))
                            //{
                            //    Console.WriteLine("entered the new if statement ");
                            //    FinalFreeBusy.Remove(f2);
                            //    FinalFreeBusy.Add(f2, RemoveDuplicateWords(second.Value + " " + first.Value));
                            //    Console.WriteLine("Added " + f2.Start + " " + f2.End + " " + RemoveDuplicateWords(second.Value + " " + first.Value));
                            //}
                            if (FinalFreeBusy[f2].IndexOf(calName) == -1)
                            {
                                FinalFreeBusy[f2] = FinalFreeBusy[f2] + " " + calName;
                                FinalFreeBusy[f2]=RemoveDuplicateWords(FinalFreeBusy[f2]);
                            }
                                


                        }
                    }
                    else
                    {
                        if (!FinalFreeBusy.ContainsKey(f2)) FinalFreeBusy.Add(f2, RemoveDuplicateWords(second.Value + " " + first.Value));
                        //Console.WriteLine("Added " + f2.Start + " " + f2.End + " " + RemoveDuplicateWords(second.Value + " " + first.Value));
                    }


                    FreeTime r = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));
                    FinalFreeBusy.Remove(r);
                    //Console.WriteLine("Removed " + r.Start + " " + r.End + " ");


                }

                // ---------------------

                if (result4 != 0 && result3 == 0 && !first.Value.Equals(second.Value))
                {
                   // Console.WriteLine("intersction3  222222222222  ccccc ");
                    FreeTime f = new FreeTime(new DateTime(Math.Min(first.Key.End.Ticks, second.Key.End.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));
                    if (result4 < 0) { calName = second.Value; Console.WriteLine("intersction3  222222222222  iffff "); }
                    else calName = first.Value;


                    if (FinalFreeBusy.Count != 0)
                    {
                        if (!FinalFreeBusy.ContainsKey(f))
                        {
                           // Console.WriteLine("intersction3   222222222222  contains ");
                            FinalFreeBusy.Add(f, calName);
                            //Console.WriteLine("added " + f.Start + " " + f.End + " " + calName);
                        }
                        else
                        {
                           // Console.WriteLine("already contained " + f.Start + " " + f.End + " " + FinalFreeBusy[f]);
                          //  Console.WriteLine("entered the new code ");
                            //if (!FinalFreeBusy[f].Equals(calName))
                            //{
                            //    Console.WriteLine("entered the new if statement ");
                            //    FinalFreeBusy.Remove(f);
                            //    FinalFreeBusy.Add(f, calName);
                            //    Console.WriteLine("Added " + f.Start + " " + f.End + " " + calName);
                            //}
                            if (FinalFreeBusy[f].IndexOf(calName) == -1)
                            {
                                FinalFreeBusy[f] = FinalFreeBusy[f] + " " + calName;
                               FinalFreeBusy[f]= RemoveDuplicateWords(FinalFreeBusy[f]);
                            }
                              


                        }
                    }
                    else
                    {
                        FinalFreeBusy.Add(f, calName);
                        //Console.WriteLine("added " + f.Start + " " + f.End + " " + calName);
                    }

                   // Console.WriteLine("new  intersction3  222222222222  ccccc ");
                    FreeTime f2 = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Min(first.Key.End.Ticks, second.Key.End.Ticks)));
                    if (result4 < 0) { calName = first.Value; Console.WriteLine(" new intersction3  222222222222  iffff "); }
                    else calName = second.Value;

                    if (FinalFreeBusy.Count != 0)
                    {

                        if (!FinalFreeBusy.ContainsKey(f2))
                        {
                           // Console.WriteLine(" new intersction3   222222222222  contains ");
                            FinalFreeBusy.Add(f2, RemoveDuplicateWords(second.Value + " " + first.Value));
                            //Console.WriteLine("added new  " + f2.Start + " " + f2.End + " " + RemoveDuplicateWords(second.Value + " " + first.Value));
                        }
                        else
                        {
                           // Console.WriteLine("already contained " + f2.Start + " " + f2.End + " " + FinalFreeBusy[f2]);
                           // Console.WriteLine("entered the new code ");
                            //if (!FinalFreeBusy[f2].Equals(RemoveDuplicateWords(second.Value + " " + first.Value)))
                            //{
                            //    Console.WriteLine("entered the new if statement ");
                            //    FinalFreeBusy.Remove(f2);
                            //    FinalFreeBusy.Add(f2, RemoveDuplicateWords(second.Value + " " + first.Value));
                            //    Console.WriteLine("Added " + f2.Start + " " + f2.End + " " + RemoveDuplicateWords(second.Value + " " + first.Value));
                            //}
                            if (FinalFreeBusy[f2].IndexOf(calName) == -1)
                            {
                                FinalFreeBusy[f2] = FinalFreeBusy[f2] + " " + calName;
                                FinalFreeBusy[f2]= RemoveDuplicateWords(FinalFreeBusy[f2]);

                            }
                                


                        }


                    }
                    else
                    {

                        FinalFreeBusy.Add(f2, RemoveDuplicateWords(second.Value + " " + first.Value));
                      //  Console.WriteLine("added new" + f2.Start + " " + f2.End + " " + RemoveDuplicateWords(second.Value + " " + first.Value));
                    }

                    FreeTime r = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));
                    FinalFreeBusy.Remove(r);
                  //  Console.WriteLine("Removed " + r.Start + " " + r.End + " ");


                }

                //--------------------------------------

                if (first.Value.Equals(second.Value))
                {
                  //  Console.WriteLine("inside values are equal ");
                    FreeTime j = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));
                    if (!FinalFreeBusy.ContainsKey(j))
                    {
                        FinalFreeBusy.Add(j, first.Value);
                      //  Console.WriteLine("added " + j.Start + " " + j.End + " " + first.Value);
                        FinalFreeBusy.Remove(first.Key);
                        FinalFreeBusy.Remove(second.Key);
                      //  Console.WriteLine("Removed " + first.Key.Start + " " + first.Key.End + " ");
                       // Console.WriteLine("Removed " + second.Key.Start + " " + second.Key.End + " ");
                    }
                    else
                    {
                        //if (!FinalFreeBusy[j].Equals(first.Value))
                        //{
                        //    FinalFreeBusy.Remove(j);
                        //    FinalFreeBusy.Add(j, first.Value);
                        //    Console.WriteLine("Added " + j.Start + " " + j.End + " " + first.Value);
                        //}

                        if (FinalFreeBusy[j].IndexOf(first.Value) == -1)
                        {
                            FinalFreeBusy[j] = FinalFreeBusy[j] + " " + first.Value;
                           FinalFreeBusy[j]= RemoveDuplicateWords(FinalFreeBusy[j] );
                        }
                           


                      //  Console.WriteLine("removed without adding");
                        FinalFreeBusy.Remove(first.Key);
                        FinalFreeBusy.Remove(second.Key);
                       // Console.WriteLine("Removed " + first.Key.Start + " " + first.Key.End + " ");
                      //  Console.WriteLine("Removed " + second.Key.Start + " " + second.Key.End + " ");
                    }


                }

                //-------------------

                if (result3 != 0 && !first.Value.Equals(second.Value) && result4 != 0)
                {
                   // Console.WriteLine("inside nor start nor end are equal ");
                    string calName1, calName2;
                    FreeTime f1 = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.Start.Ticks, second.Key.Start.Ticks)));
                    if (result3 < 0) calName1 = first.Value;
                    else calName1 = second.Value;

                    FreeTime f2 = new FreeTime(new DateTime(Math.Min(first.Key.End.Ticks, second.Key.End.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));
                    if (result4 < 0)
                        calName2 = second.Value;
                    else calName2 = first.Value;


                    if (!FinalFreeBusy.ContainsKey(f1))
                    {
                        FinalFreeBusy.Add(f1, calName1);
                       // Console.WriteLine("added " + f1.Start + " " + f1.End + " " + calName1);
                    }
                    else
                    {

                        //if (!FinalFreeBusy[f1].Equals(calName1))
                        //{
                        //    FinalFreeBusy.Remove(f1);
                        //    FinalFreeBusy.Add(f1, calName1);
                        //    Console.WriteLine("Added " + f1.Start + " " + f1.End + " " + calName1);
                        //}

                        if (FinalFreeBusy[f1].IndexOf(calName1) == -1)
                        {
                            FinalFreeBusy[f1] = FinalFreeBusy[f1] + " " + calName1;
                            FinalFreeBusy[f1]=RemoveDuplicateWords(FinalFreeBusy[f1] );
                        }
                            


                    }



                    if (!FinalFreeBusy.ContainsKey(f2))
                    {
                        FinalFreeBusy.Add(f2, calName2);
                      //  Console.WriteLine("added " + f2.Start + " " + f2.End + " " + calName2);
                    }
                    else
                    {
                        //if (!FinalFreeBusy[f2].Equals(calName2))
                        //{
                        //    FinalFreeBusy.Remove(f2);
                        //    FinalFreeBusy.Add(f2, calName2);
                        //    Console.WriteLine("Added " + f2.Start + " " + f2.End + " " + calName2);
                        //}

                        if (FinalFreeBusy[f2].IndexOf(calName2) == -1)
                        {
                            FinalFreeBusy[f2] = FinalFreeBusy[f2] + " " + calName2;

                         FinalFreeBusy[f2]=   RemoveDuplicateWords(FinalFreeBusy[f2]);
                        }
                            
                    }




                    FreeTime r = new FreeTime(new DateTime(Math.Max(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Min(first.Key.End.Ticks, second.Key.End.Ticks)));
                    if (!FinalFreeBusy.ContainsKey(r))
                    {
                        FinalFreeBusy.Add(r, RemoveDuplicateWords(second.Value + " " + first.Value));
                        //Console.WriteLine("added " + r.Start + " " + r.End + " " + RemoveDuplicateWords(second.Value + " " + first.Value));
                    }
                    else
                    {

                        //if (!FinalFreeBusy[r].Equals(RemoveDuplicateWords(second.Value + " " + first.Value)))
                        //{
                        //    FinalFreeBusy.Remove(r);
                        //    FinalFreeBusy.Add(r, RemoveDuplicateWords(second.Value + " " + first.Value));
                        //    Console.WriteLine("Added " + r.Start + " " + r.End + " " + RemoveDuplicateWords(second.Value + " " + first.Value));
                        //}

                        if (FinalFreeBusy[r].IndexOf(RemoveDuplicateWords(second.Value + " " + first.Value)) == -1)
                        {
                            FinalFreeBusy[r] = FinalFreeBusy[r] + " " + RemoveDuplicateWords(second.Value + " " + first.Value);
                          FinalFreeBusy[r]=  RemoveDuplicateWords(FinalFreeBusy[r]);
                        }


                    }

                    

                    FreeTime re = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));

                   // Console.WriteLine("Removed " + re.Start + " " + re.End + " ");
                    FinalFreeBusy.Remove(re);


                }

                return true;

            }


            else
                return false;




        }
Пример #24
0
 public void setFreeTime(FreeTime i)
 {
     freeTime = i;
 }
Пример #25
0
 protected void Awake()
 {
     stateMachine = gameObject.AddComponent<StateMachine>();
     freeTime = gameObject.AddComponent<FreeTime>();
 }
Пример #26
0
        public async Task <IActionResult> AddFreeTime(string userId, string groupId, DateTime start, DateTime end)
        {
            User user = await userManager.FindByIdAsync(userId);

            Group group = groupRepository.GetGroup(groupId);

            if (user != null && group != null)
            {
                bool freeTimeEdited = false;
                if (start.CompareTo(end) >= 0)
                {
                    return(BadRequest("Event ends before it starts."));
                }
                FreeTime freeTime    = new FreeTime();
                var      timesInRepo = freeTimeRepository.GetUserFreeTime(userId);//, groupId);

                if (timesInRepo != null)
                {
                    foreach (var time in timesInRepo)
                    {
                        if ((time.StartTime < start && time.EndTime > start) ||
                            (time.StartTime < end && time.EndTime > end))
                        {
                            freeTime           = time;
                            freeTime.EndTime   = end;
                            freeTime.StartTime = start;
                            freeTimeRepository.Delete(time.Id);
                            freeTimeEdited = true;
                        }
                        else if (time.StartTime > start && time.EndTime < end)
                        {
                            freeTime           = time;
                            freeTime.EndTime   = end;
                            freeTime.StartTime = start;
                            freeTimeRepository.Delete(time.Id);
                            freeTimeEdited = true;
                        }
                        else if (time.EndTime == start)
                        {
                            freeTime         = time;
                            freeTime.EndTime = end;
                            freeTimeRepository.Delete(time.Id);
                            freeTimeEdited = true;
                        }
                        else if (time.StartTime == end)
                        {
                            freeTime           = time;
                            freeTime.StartTime = start;
                            freeTimeRepository.Delete(time.Id);
                            freeTimeEdited = true;
                        }
                    }
                }

                if (!freeTimeEdited)
                {
                    freeTime = new FreeTime
                    {
                        Id        = Guid.NewGuid().ToString(),
                        EndTime   = end,
                        StartTime = start,
                        User      = user,
                        UserId    = user.Id,
                        Group     = group,
                        GroupId   = group.GroupId
                    };
                }

                freeTimeRepository.Add(freeTime);
                FreeTimeEntity res    = new FreeTimeEntity(freeTime);
                var            result = JsonConvert.SerializeObject(res, Formatting.Indented);
                return(Content(result));
            }

            return(BadRequest("User or Group not found."));
        }
Пример #27
0
        }//end method


        private void FinalMutual3()
        {
            Dictionary<FreeTime, string> FinalFreeBusy2 = new Dictionary<FreeTime, string>(FinalFreeBusy);
            FinalFreeBusy = new Dictionary<FreeTime, string>();
            //foreach (KeyValuePair<FreeTime, String> t in FinalFreeBusy2)
            //{
            //    Console.WriteLine(t.Key.Start + " $$$$ " + t.Key.End + "  $$$$$ " + t.Value);
            //}

            Boolean intersecFound = false;
            Boolean intersection = false;
            foreach (KeyValuePair<FreeTime, String> t in FinalFreeBusy2)
            {
                //Console.WriteLine(" intersection 3  ");
                intersecFound = false;
                if (FinalFreeBusy2 != null)///&& list.Count > 1)
                {
                    //Console.WriteLine(t.Key.Start + " " + t.Key.End + FinalFreeBusy2);
                    foreach (KeyValuePair<FreeTime, String> s in FinalFreeBusy2)
                    {
                       
                        if ((DateTime.Compare(t.Key.Start.Date, s.Key.Start.Date) != 0)||((DateTime.Compare(t.Key.Start.Date, s.Key.Start.Date) == 0) && t.Key.End.CompareTo(s.Key.Start) <= 0))
                            continue;
                       // Console.WriteLine(s.Key.Start + " " + s.Key.End +" " +s.Value+ " sssssssssss   f3");
                        //Console.WriteLine("*********************final 3 **************");
                        if (!((DateTime.Compare(t.Key.Start, s.Key.Start) == 0) && (DateTime.Compare(t.Key.End, s.Key.End) == 0)) && (t.Key.Start.Date == s.Key.Start.Date) /*&& t.Value.Equals(s.Value)*/ )
                        {
                            //Console.WriteLine("intered interesion in intesection3");
                            intersection = Intersection3(t, s);
                            if (intersection) intersecFound = true;
                        }



                    }//end foreach
                    if (!intersecFound)
                    {
                        if (!FinalFreeBusy.ContainsKey(t.Key))
                            FinalFreeBusy.Add(new FreeTime(t.Key.Start, t.Key.End), t.Value);
                        intersecFound = false;
                    }

                }
            }
            //Console.WriteLine("end of final 3");

            Dictionary<FreeTime, string> FinalFreeBusy3 = new Dictionary<FreeTime, string>(FinalFreeBusy);
            foreach (KeyValuePair<FreeTime, String> first in FinalFreeBusy3)
            {
                foreach (KeyValuePair<FreeTime, String> second in FinalFreeBusy3)
                    if (first.Key.Start.CompareTo(second.Key.Start) == 0 && first.Key.End.CompareTo(second.Key.End) != 0)
                    {
                                        
                    FreeTime r = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));
                    FinalFreeBusy.Remove(r);
                   
                    }
                       
            }
        }//end method
Пример #28
0
        }//end method


        private static FreeTime Intersection(FreeTime first, FreeTime second)
        {
           // Console.WriteLine("inside intersection " + first.Start + " " + first.End + " sescond " + second.Start + " " + second.End);
            int result1 = DateTime.Compare(first.Start, second.End);
            int result2 = DateTime.Compare(first.End, second.Start);
            int result3 = DateTime.Compare(first.Start, second.Start);
            int result4 = DateTime.Compare(first.End, second.End);
            Boolean equal = (result3 == 0 && result4 == 0);

            if (!(result1 >= 0) && !(result2 <= 0) && !equal)
            {
                //Console.WriteLine(new DateTime(Math.Max(first.Start.Ticks, second.Start.Ticks)).TimeOfDay + "min max" + new DateTime(Math.Min(first.End.Ticks, second.End.Ticks)).TimeOfDay);

                return new FreeTime(new DateTime(Math.Max(first.Start.Ticks, second.Start.Ticks)), new DateTime(Math.Min(first.End.Ticks, second.End.Ticks)));

            }

            else if (result3 == 0 && result4 == 0)
                return (new FreeTime(first.Start, first.End));

            else return null;


        }
        public async Task <IActionResult> AddFreeTime([FromBody] AInfo2 info)
        {
            if (info.doctor == "" || info.date == "" || info.start == "" || info.end == "")
            {
                return(Ok("Invalid info"));
            }

            try
            {
                var freeTime = await _dbContext.FreeTimes.AsNoTracking().Include(a => a.Doctor).SingleOrDefaultAsync(ft => ft.Id == info.id);

                bool adding = false;
                if (freeTime == null)
                {
                    freeTime = new FreeTime {
                        Doctor = _dbContext.Doctors.SingleOrDefault(d => d.Name == info.doctor)
                    };

                    adding = true;
                }
                else
                {
                    freeTime.RowVersion = info.rowVersion;
                }

                freeTime.Start = DateTime.ParseExact(info.date + " " + info.start, "yyyy-MM-dd HH:mm", null);
                freeTime.End   = DateTime.ParseExact(info.date + " " + info.end, "yyyy-MM-dd HH:mm", null);



                var freeTimes = _dbContext.FreeTimes.AsNoTracking().Include(ft => ft.Doctor)
                                .Where(ft => ft.Doctor.Name == freeTime.Doctor.Name && ft.Start.Date == freeTime.Start.Date);


                var intersectingElements = CalculateIntersectingElements(freeTime, freeTimes);
                if (intersectingElements.Count > 0)
                {
                    var newFt = new FreeTime {
                        Doctor = freeTime.Doctor
                    };
                    newFt.Start = intersectingElements.First().Start < freeTime.Start ? intersectingElements.First().Start : freeTime.Start;
                    newFt.End   = intersectingElements.Last().End > freeTime.End ? intersectingElements.Last().End : freeTime.End;

                    if (!adding)
                    {
                        _dbContext.FreeTimes.Remove(freeTime);
                    }
                    _dbContext.RemoveRange(intersectingElements.Select(el => new FreeTime {
                        Id = el.Id, RowVersion = el.RowVersion
                    }));


                    _dbContext.FreeTimes.Add(newFt);
                    _dbContext.SaveChanges();

                    return(Ok("Success"));

                    //return Ok("Intersection error");
                }



                if (adding)
                {
                    _dbContext.FreeTimes.Add(freeTime);
                }
                else
                {
                    _dbContext.FreeTimes.Update(freeTime);
                }

                _dbContext.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                return(Ok("Fail"));
            }

            return(Ok("Success"));
        }
Пример #30
0
        public CalendarEventList GetComparingEvents(DateTime timeMin, DateTime timeMax, List<String> CalendarIDs, String ViewFormat,bool primaryEmail)
        {

             allFree = new List<FreeTime>();
         finalFree = new List<FreeTime>();
         FinalallFree= new Dictionary<FreeTime, int>();
         FinalallFreeConnection = new Dictionary<FreeTime, String>();
         FreeBusy = new Dictionary<FreeTime, string>();
      FinalFreeBusy = new Dictionary<FreeTime, string>();
      primary = primaryEmail;
            if(primary)
                firstEmail = CalendarIDs[0].Substring(0, CalendarIDs[0].IndexOf("."));

            //Console.WriteLine("fffffffffffff "+ firstEmail);


            log.Debug("Try to compare  events from other Google Calendars ");
            CalendarEventList calendarEvents = new CalendarEventList();

            Dictionary<string, List<FreeTime>> personAndFreeTimes = new Dictionary<string, List<FreeTime>>();
            List<String> noEvents = new List<string>();

            

            try
            {
                foreach (String calendarID in CalendarIDs)
                {

                    List<FreeTime> freeTimeList = new List<FreeTime>();
                    if (timeMax.DayOfWeek == 0)
                        timeMax = timeMax.AddDays(-2);

                    if (timeMax.DayOfWeek == DayOfWeek.Saturday)
                        timeMax = timeMax.AddDays(-1);

                    if (timeMin.DayOfWeek == DayOfWeek.Saturday)
                        timeMax = timeMax.AddDays(+2);

                    if (timeMin.DayOfWeek == DayOfWeek.Sunday)
                        timeMax = timeMax.AddDays(+1);





                    EventsResource.ListRequest events = service.Events.List(calendarID);

                    events.SingleEvents = true;
                    events.MaxResults = 2500;
                    events.TimeMin = timeMin;
                    events.TimeMax = timeMax;
                    Events eventList = events.Execute();






                    FreeBusyRequest request = new FreeBusyRequest();
                    List<FreeBusyRequestItem> requestItems = new List<FreeBusyRequestItem>();
                    request.TimeMin = timeMin;
                    request.TimeMax = timeMax;
                    FreeBusyRequestItem r = new FreeBusyRequestItem();
                                                          

                    r.Id = calendarID;

                    request.Items = new List<FreeBusyRequestItem>();
                    request.Items.Add(r);

                    FreebusyResource.QueryRequest TestRequest = service.Freebusy.Query(request);
                    var responseOBJ = TestRequest.Execute();
                    int count = responseOBJ.Calendars[calendarID].Busy.Count;
                    

                    if (count == 0)
                    {
                        FreeTime free = new FreeTime();

                        free.setStart(new DateTime(timeMax.Year, timeMax.Month, timeMax.Day, 9, 0, 0));
                        free.setEnd(new DateTime(timeMax.Year, timeMax.Month, timeMax.Day, 5, 0, 0).AddHours(12));
                        free.setEmail(calendarID);
                        freeTimeList.Add(free);
                        //Console.WriteLine(calendarID + " " + free.Start + " " + free.End);

                    }


                    if (count != 0)
                    {


                       // Console.WriteLine(timeMax.Date + "date max ");
                        //Console.WriteLine(timeMin.Date + "date min ");
                       // Console.WriteLine(DateTime.Today + "fff");
                        DateTime d = timeMin.Date;
                        Boolean found = false;
                        

                        if (d.DayOfWeek == DayOfWeek.Sunday)
                            d = d.AddDays(1);

                      //  Console.WriteLine("first     "+ d.Date);
                        if (timeMax.Date.CompareTo(timeMin.Date) != 0 && d.DayOfWeek != DayOfWeek.Saturday && d.DayOfWeek != DayOfWeek.Sunday)
                        {

                            //Console.WriteLine("second    " + d.Date);
                        while (d <= timeMax)
                        {
                          found = false;
                            foreach (TimePeriod n in responseOBJ.Calendars[calendarID].Busy)
                            { 
                                //Console.WriteLine("third    " + d.Date);
                                //Console.WriteLine(d.CompareTo(n.Start.Value.Date) + " d: " + d.Date + "n :  " + n.Start.Value.Date); 
                                if (d.CompareTo(n.Start.Value.Date) == 0)
                                {
                                    found = true;
                                    break;
                                }
                            }

                           // Console.WriteLine("fourth    " + d.Date + " " + found);
                            if (!found)
                            {
                                //Console.WriteLine("not found    " + d.Date);
                                FreeTime free = new FreeTime();

                                free.setStart(new DateTime(d.Year, d.Month, d.Day, 9, 0, 0));
                                free.setEnd(new DateTime(d.Year, d.Month, d.Day, 5, 0, 0).AddHours(12));
                                free.setEmail(calendarID);
                                freeTimeList.Add(free);
                               // Console.WriteLine("adding to list    " + free.Start + " " + free.End);
                            }
                            d= d.AddDays(+1);
                            
                            if (d.DayOfWeek == DayOfWeek.Saturday)
                                d = d.AddDays(+2);
                            
                        }
                        }


                        int i = 0;
                        int j = 0;
                        Boolean singleevent = false;
                       // Console.WriteLine("the count " + count);
                        if (count == 1) singleevent = true;
                        while (i < count && count != 0)
                        {
                            FreeTime free = new FreeTime();
                            Boolean startatNine = false;
                            Boolean endFive = false;

                            DateTime starttime = (responseOBJ.Calendars[calendarID].Busy[i].Start).Value;
                            DateTime endtime = (responseOBJ.Calendars[calendarID].Busy[i].End).Value;


                           // Console.WriteLine(" lets see " + starttime + " " + endtime);

                            DateTime startworkhours = new DateTime(starttime.Year, starttime.Month, starttime.Day, 9, 0, 0);
                            DateTime endworkhours = new DateTime(starttime.Year, starttime.Month, starttime.Day, 5, 0, 0).AddHours(12);


                            if (i == 0 && singleevent == false)
                            {
                                if (j == 0 && (DateTime.Compare(startworkhours, starttime) != 0))
                                {
                                    free = subtractFromNine(starttime, endtime, i);
                                    free.setEmail(calendarID);

                                    if ((DateTime.Compare(starttime.Date, ((DateTime)responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Date) < 0))
                                    {

                                        i--;
                                        j++;
                                    }

                                }



                                else if (startworkhours.Equals(starttime) || j > 0)
                                {
                                    //Console.WriteLine("urghhhhh" + DateTime.Compare(starttime.Date, ((DateTime)responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Date));

                                    if (startworkhours.Equals(starttime) && j == 0)
                                    {

                                       // Console.WriteLine("inside second if ");
                                        startatNine = true;
                                        if (DateTime.Compare(starttime.Date, ((DateTime)responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Date) < 0)
                                        {
                                          // Console.WriteLine("::::::::::::::::::::::::::::::::::::::::::::::::::::");
                                            j++;
                                            i--;

                                        }


                                    }

                                    else if ((DateTime.Compare(starttime.Date, ((DateTime)responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Date) < 0) && j > 0)
                                    {
                                        //Console.WriteLine("inside first if ");
                                        free = subtractFromFive(starttime, endtime, i);
                                        free.setEmail(calendarID);
                                        j = 0;
                                    }

                                }

                            }




                            else if (i + 1 == count && singleevent == false)
                            {
                                if (j == 0)
                                {
                                   //Console.WriteLine(" else if (i + 1 == count && !(endworkhours.equals(endtime)) && singleevent == false) j==0 ");
                                    DateTime tempstarttime = (responseOBJ.Calendars[calendarID].Busy[i - 1].Start).Value;
                                    DateTime tempendtime = (responseOBJ.Calendars[calendarID].Busy[i - 1].End).Value;

                                    if ((DateTime.Compare(starttime.Date, tempendtime.Date) == 0))
                                    {
                                        //Console.WriteLine(" entered if ");
                                        TimeSpan interval = starttime - tempendtime;
                                        free.setStart(starttime - interval);
                                        //Console.WriteLine(free.Start);
                                        free.setEnd(starttime);
                                        free.setEmail(calendarID);

                                  }

                                    else
                                    {
                                        free = subtractFromNine(starttime, endtime, i);
                                        
                                    }

                                    if (!(endworkhours.Equals(endtime)))
                                    {
                                        j++;
                                        i--;
                                    }

                                }
                                else
                                {
                                    if (!(endworkhours.Equals(endtime)))
                                    {
                                        free = subtractFromFive(starttime, endtime, i);
                                        j = 0;
                                    }
                                    else endFive = true;


                                }


                            }
                            else if (singleevent)
                            {
                                //Console.WriteLine("inside single event " + j + " " + starttime + " " + startworkhours);
                                if (j == 0 && !(DateTime.Compare(starttime, startworkhours) == 0))
                                {
                                    free = subtractFromNine(starttime, endtime, i);


                                    if (!(DateTime.Compare(endtime, endworkhours) == 0))
                                    {
                                        j++;
                                        i--;
                                    }

                                }


                                else
                                {
                                    if (!(DateTime.Compare(endtime, endworkhours) == 0))
                                    {
                                        free = subtractFromFive(starttime, endtime, i);
                                        free.setEmail(calendarID);
                                        j = 0;
                                    }
                                    else endFive = true;

                                }


                            }

                            else
                            {

                               //Console.WriteLine("yaaaaaaaaaaaaaaarab");
                                DateTime tempstarttime = (responseOBJ.Calendars[calendarID].Busy[i - 1].Start).Value;
                                DateTime tempendtime = (responseOBJ.Calendars[calendarID].Busy[i - 1].End).Value;
                                if (j == 0)
                                {
                                    if ((DateTime.Compare(tempendtime.Date, starttime.Date) == 0))
                                    {
                                        //Console.WriteLine("entered the first");
                                        TimeSpan interval = starttime - tempendtime;
                                        free.setStart(starttime - interval);
                                        free.setEnd(starttime);
                                        free.setEmail(calendarID);


                                    }

                                    else
                                    {
                                        //Console.WriteLine("entered the second");
                                        if (startworkhours.Equals(starttime))
                                        {
                                           // Console.WriteLine("statrt at nine");
                                            startatNine = true;
                                        }
                                        else
                                        {
                                            free = subtractFromNine(starttime, endtime, i);
                                        }

                                    }

                                    if ((DateTime.Compare(starttime.Date, ((DateTime)(responseOBJ.Calendars[calendarID].Busy[i + 1].Start).Value).Date) < 0))
                                    {
                                       //Console.WriteLine("entered the comparason");
                                        i--;
                                        j++;



                                    }

                                }
                                else
                                {
                                    //Console.WriteLine("supposed " + endworkhours.Equals(endtime));
                                    if (!(endworkhours.Equals(endtime)))
                                    {
                                        free = subtractFromFive(starttime, endtime, i);
                                        free.setEmail(calendarID);
                                        j = 0;
                                    }
                                    else { endFive = true; j = 0; }

                                }



                            }
                            i++;


                            if (!startatNine && !endFive)
                            {
                                //Console.WriteLine("befor adding " + free.Start + "  " + free.End);
                                freeTimeList.Add(free);
                               //  Console.WriteLine(calendarID + " " + free.Start + " " + free.End);

                            }

                            //Console.WriteLine("after adding to list");

                        }//end while
                    }//end if (count !=0 )

                   
                    personAndFreeTimes.Add(calendarID.Substring(0, calendarID.IndexOf(".")), freeTimeList);

                    //foreach (String k in personAndFreeTimes.Keys)
                    //{
                    //    foreach (FreeTime f in personAndFreeTimes[k])
                    //        //Console.WriteLine(k + " " + f.Start + " " + f.End);
                    //}

                    freeTimeList.Sort();

                   

                    }//end foreach


                numberOfEmails = personAndFreeTimes.Count;
                Stack myStack = new Stack();
                foreach (String key in personAndFreeTimes.Keys)
                {


                    myStack.Push(personAndFreeTimes[key]);
                }

                //  -----------------------------------  All People View   --------------------------------------------------   //

                if (ViewFormat == "All People")
                {

                 
                    Stack s1 = new Stack();
                    Stack s2 = new Stack();
                    foreach (String key in personAndFreeTimes.Keys)
                    {
                        // string result = noEvents.Find(delegate(String  i) { return i == key; });
                        //  if(result!=null)
                        KeyValuePair<List<FreeTime>, String> pair = new KeyValuePair<List<FreeTime>, String>(personAndFreeTimes[key], key);

                        s1.Push(pair);
                        s2.Push(pair);
                        //Console.WriteLine("pair " + pair.Key.ToString() + " " + pair.Value);
                    }



                    while (s1.Count != 0)
                    {
                        KeyValuePair<List<FreeTime>, String> sp1 = (KeyValuePair<List<FreeTime>, String>)s1.Pop();
                        while (s2.Count != 0)
                        {
                            KeyValuePair<List<FreeTime>, String> sp2 = (KeyValuePair<List<FreeTime>, String>)s2.Pop();
                            if (!(sp1.Value.Equals(sp2.Value)))
                                FindMutual2(sp1, sp2);
                        }
                        s2 = s1;
                    }



                    FinalMutual2();

                    if (personAndFreeTimes.Count > 2)
                    {

                        FinalMutual3();
                        FinalMutual3();
                    }
                    //Console.WriteLine(" back to main");
                    // FinalMutual4();
                    calendarEvents = ConvertToMutualCalendarEvents(FinalFreeBusy);

                }//end if All People view

                //  -----------------------------------     --------------------------------------------------   //


                //  -----------------------------------  "Some People" View   --------------------------------------------------   //

                if (ViewFormat == "Some People")
                {

                    Stack s1 = new Stack();
                    Stack s2 = new Stack();
                    foreach (String key in personAndFreeTimes.Keys)
                    {
                        
                        KeyValuePair<List<FreeTime>, String> pair = new KeyValuePair<List<FreeTime>, String>(personAndFreeTimes[key], key);

                        s1.Push(pair);
                        s2.Push(pair);
                        //Console.WriteLine("pair " + pair.Key.ToString() + " " + pair.Value);
                    }



                    while (s1.Count != 0)
                    {
                        KeyValuePair<List<FreeTime>, String> sp1 = (KeyValuePair<List<FreeTime>, String>)s1.Pop();
                        while (s2.Count != 0)
                        {
                            KeyValuePair<List<FreeTime>, String> sp2 = (KeyValuePair<List<FreeTime>, String>)s2.Pop();
                            if (!(sp1.Value.Equals(sp2.Value)))
                                FindMutual2(sp1, sp2);
                        }
                        s2 = s1;
                    }



                    FinalMutual2();

                    // if (personAndFreeTimes.Count > 2)
                    int num = 1;
                    while( num<personAndFreeTimes.Count)
                    {
                        FinalMutual3();
                        num++;
                    }
                    FinalMutual3();
                    
                    calendarEvents = ConvertToFreeBusyCalendarEvents(FinalFreeBusy);
                } //end free busy view 

                //Console.WriteLine("before sort");
                calendarEvents.SortByDate();

                log.Debug("Successfully compared  events from other Google Calendars");
            }// end try


            catch (Exception ex)
            {
                log.Error("Failed to compare  events from other  Google Calendars with error:", ex);
            }

            
            return calendarEvents;

        }
Пример #31
0
        private static Boolean Intersection2(KeyValuePair<FreeTime, String> first, KeyValuePair<FreeTime, String> second)
        {
          
            List<FreeTime> resultList = new List<FreeTime>();
            int result1 = DateTime.Compare(first.Key.Start, second.Key.End);
            int result2 = DateTime.Compare(first.Key.End, second.Key.Start);
            int result3 = DateTime.Compare(first.Key.Start, second.Key.Start);
            int result4 = DateTime.Compare(first.Key.End, second.Key.End);
            String calName;
            Boolean equal = (result3 == 0 && result4 == 0);

            if (!(result1 >= 0) && !(result2 <= 0) && !equal)
            {
               // Console.WriteLine("inside first if  ");
                if (result3 != 0)
                {
                    //Console.WriteLine("gggggggggggggg  1111111111111   ");
                    FreeTime f = new FreeTime(new DateTime(Math.Min(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Max(first.Key.Start.Ticks, second.Key.Start.Ticks)));
                    if (result3 < 0) calName = first.Value;
                    else calName = second.Value;
                    if (FinalFreeBusy.Count != 0)
                    {
                        if (!FinalFreeBusy.ContainsKey(f))
                        {
                            FinalFreeBusy.Add(f, calName);
                            //Console.WriteLine("Added " + f.Start + " " + f.End + " " + calName);

                        }


                    }
                    else {
                        if (!FinalFreeBusy.ContainsKey(f))
                            FinalFreeBusy.Add(f, calName); 
                       // Console.WriteLine("Added " + f.Start + " " + f.End + " " + calName); 
                    }


                }


                if (result4 != 0)
                {
                    //Console.WriteLine("gggggggggggggg222222222222  ccccc ");
                    FreeTime f = new FreeTime(new DateTime(Math.Min(first.Key.End.Ticks, second.Key.End.Ticks)), new DateTime(Math.Max(first.Key.End.Ticks, second.Key.End.Ticks)));
                    //Console.WriteLine(f.Start + " " + f.End + "{{{{{{{{{{{{ ");
                    if (result4 < 0) { calName = second.Value; 
                       // Console.WriteLine("gggggggggggggg222222222222  iffff "); 
                    }
                    else calName = first.Value;


                    if (FinalFreeBusy.Count != 0)
                    {
                        //beforeAdding(new KeyValuePair<FreeTime, String>(f, calName));

                        if (!FinalFreeBusy.ContainsKey(f))
                        {
                            //Console.WriteLine("gggggggggggggg222222222222  contains ");
                            FinalFreeBusy.Add(f, calName);
                            //Console.WriteLine("added " + f.Start + " " + f.End + " " + calName);
                        }

                    }
                    else
                    {
                        if (!FinalFreeBusy.ContainsKey(f))
                            FinalFreeBusy.Add(f, calName);
                        //Console.WriteLine("added " + f.Start + " " + f.End + " " + calName);
                    }

                }
                //Console.WriteLine("gggggggggggggg333333333333333  ccccc whyyyyyyy");
                FreeTime r = new FreeTime(new DateTime(Math.Max(first.Key.Start.Ticks, second.Key.Start.Ticks)), new DateTime(Math.Min(first.Key.End.Ticks, second.Key.End.Ticks)));

               // Console.WriteLine("gggggggggggggg333333333333333  ccccc whyyyyyyy222222222");

                if (!FinalFreeBusy.ContainsKey(r))
                {
                    //Console.WriteLine("gggggggggggggg333333333333333  ccccc whyyyyyyy  3333 ");
                    FinalFreeBusy.Add(r, RemoveDuplicateWords(second.Value + " " + first.Value));
                    //Console.WriteLine("added " + r.Start + " " + r.End + " " + RemoveDuplicateWords(second.Value + " "+ first.Value));
                }


                return true;

            }

            if (result3 == 0 && result4 == 0 && !(first.Value.Equals(second.Value)))
            {
                //Console.WriteLine("inside second if  ");
                if (!FinalFreeBusy.ContainsKey((new FreeTime(first.Key.Start, first.Key.End))))
                    FinalFreeBusy.Add(new FreeTime(first.Key.Start, first.Key.End), RemoveDuplicateWords(first.Value + " " + second.Value));
                //Console.WriteLine("added " + new FreeTime(first.Key.Start, first.Key.End).Start + " " + new FreeTime(first.Key.Start, first.Key.End).End + " " + first.Value + second.Value);
                return true;
            }


            //Console.WriteLine("outside if  ");
            return false;

        }
Пример #32
0
        /// <summary>
        /// Оформление заказа
        /// </summary>
        /// <param name="time">Выбранное время</param>
        /// <param name="notes">Заметки</param>
        /// <param name="where_eat">Место питания</param>
        /// <param name="allprice">Итоговая сумма</param>
        /// <returns>false если время уже занято, иначе true</returns>
        public bool Post(string time, string notes, string where_eat, int allprice)
        {
            Dictionary <string, string> dayName = new Dictionary <string, string>(7);

            dayName.Add("Monday", "Понедельник");
            dayName.Add("Tuesday", "Вторник");
            dayName.Add("Wednesday", "Среда");
            dayName.Add("Thursday", "Четверг");
            dayName.Add("Friday", "Пятница");
            dayName.Add("Saturday", "Суббота");
            dayName.Add("Sunday", "Воскресенье");

            //Название сегодняшнего дня
            string Today = dayName[DateTime.Now.DayOfWeek.ToString()];

            using (var db = new Contexts())
            {
                //Выбираю день с названием сегодняшнего
                DayWork day = new DayWork();
                day = db.DayWork.Where(d => d.Name == Today).FirstOrDefault();

                //Выбираю из доступных времен заказов только сегодняшнее и по выбранному времени
                FreeTime t = new FreeTime();
                t = db.FreeTime.Where(c => c.Time == time && c.DayWorkID == day.DayWorkID)
                    .FirstOrDefault();

                //Проверяю, не успели ли его занять
                if (t.cur_amount + 1 <= t.max_amount)
                {
                    ++t.cur_amount;

                    int id_user;

                    CookieHeaderValue cookie = Request.Headers.GetCookies("user_token").FirstOrDefault();
                    if (cookie != null)
                    {
                        //Уникальный идентификатор пользователя из куки
                        id_user = Convert.ToInt32(cookie["user_token"].Value);

                        //Заполняю заказ
                        Order       order = new Order();
                        List <Cart> cart  = db.Cart.Where(c => c.UserId == id_user).ToList();
                        order.Notes     = notes;
                        order.OrderTime = DateTime.Now;
                        order.ReadyTime = time;
                        order.Status    = 0;
                        order.UserId    = id_user;
                        order.Sum       = allprice;
                        if (where_eat == "true")
                        {
                            order.WhereEat = true;
                        }
                        else
                        {
                            order.WhereEat = false;
                        }
                        db.Orders.Add(order);
                        db.SaveChanges();
                        foreach (Cart c in cart)
                        {
                            OrderItems orderItems = new OrderItems();
                            orderItems.Amount   = c.Amount;
                            orderItems.MenuItem = db.MenuItems.Where(m => m.Id == c.MenuItemId).FirstOrDefault();
                            orderItems.Sum      = c.Amount * orderItems.MenuItem.Price;
                            orderItems.OrderId  = order.OrderID;
                            db.OrderItems.Add(orderItems);
                        }

                        //Чистим корзину
                        foreach (Cart c in cart)
                        {
                            db.Cart.Remove(c);
                        }
                        db.SaveChanges();

                        //Формирование номера заказа
                        string tmp = DateTime.Now.Year.ToString().Substring(2);
                        if (DateTime.Now.Month.ToString().Length == 1)
                        {
                            tmp += "0" + DateTime.Now.Month.ToString();
                        }
                        else
                        {
                            tmp += DateTime.Now.Month.ToString();
                        }
                        if (DateTime.Now.Day.ToString().Length == 1)
                        {
                            tmp += "0" + DateTime.Now.Day.ToString();
                        }
                        else
                        {
                            tmp += DateTime.Now.Day.ToString();
                        }
                        if (DateTime.Now.Minute.ToString().Length < 2)
                        {
                            tmp += "0" + DateTime.Now.Minute.ToString();
                        }
                        else
                        {
                            tmp += DateTime.Now.Minute.ToString();
                        }
                        if (DateTime.Now.Hour.ToString().Length < 2)
                        {
                            tmp += "0" + DateTime.Now.Hour.ToString();
                        }
                        else
                        {
                            tmp += DateTime.Now.Hour.ToString();
                        }
                        if (order.OrderID % 100 < 10)
                        {
                            tmp += "0" + (order.OrderID % 100).ToString();
                        }
                        else
                        {
                            tmp += (order.OrderID % 100).ToString();
                        }
                        order.NumberOrder = tmp;
                        db.SaveChanges();
                    }

                    return(true);
                }
                else //Если не успели
                {
                    return(false);
                }
            }
        }
Пример #33
0
        private FreeTime subtractFromFive(DateTime startTime, DateTime endTime, int i)
        {
            FreeTime free = new FreeTime();


            DateTime startWorkHours = new DateTime(startTime.Year, startTime.Month, startTime.Day, 9, 0, 0);
            DateTime endWorkHours = new DateTime(startTime.Year, startTime.Month, startTime.Day, 5, 0, 0).AddHours(12);

            TimeSpan interval = endWorkHours - endTime;
            free.setStart(endWorkHours - interval);
            free.setEnd(endWorkHours);
           // Console.WriteLine("inside the five method : " + free.Start + " " + free.End);

            return free;


        }