Exemple #1
0
        public ActionResult Save(DateTime?sdate)
        {
            try
            {
                var date = sdate.Value;
                using (IUnitOfWork uow = new UnitOfWork(new DbContextWrap()))
                {
                    var picked = reservationManager.GetPickedForDateAndUser(uow, date, User.Identity.GetUserId());
                    if (picked.Count == 0)
                    {
                        return(RedirectToAction("MainTable", "Home", new { code = new ReturnCode(ReturnCodeLevel.WARNING, Resource.ReservationExpired, null).ToString(), date = date }));
                    }

                    var emailsData = new List <KeyValuePair <string, TimeSpan> >();
                    foreach (var pick in picked)
                    {
                        var model = new ReservationModel()
                        {
                            Date    = pick.PickedDate,
                            TableId = pick.TableId,
                            TimeId  = pick.TimeId,
                            UserId  = pick.UserId
                        };
                        repository.Delete <PickedModel>(uow, pick);
                        repository.Add <ReservationModel>(uow, model);

                        var table =
                            repository.Get <TableModel, int>(uow, item => item.Id == pick.TableId, item => item.Id)
                            .First().Number.ToString();
                        var time = repository.Get <TimeModel, int>(uow, item => item.Id == pick.TimeId, item => item.Id)
                                   .First().StartTime;
                        var data = new KeyValuePair <string, TimeSpan>(table, time);
                        emailsData.Add(data);
                    }
                    emailController.SendReservationConfirmation(User.Identity.GetUserName(), emailsData, sdate.Value.ToString("MM/dd/yyyy"));
                    uow.SaveChanges();
                }

                return(RedirectToAction("MainTable", "Home", new { code = new ReturnCode(ReturnCodeLevel.SUCCESS, Resource.ReservationSuccess, Resource.ReservationSuccessReason).ToString(), date = date }));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message + Environment.NewLine + ex.StackTrace);
                return(RedirectToAction("MainTable", "Home", new { code = new ReturnCode(ReturnCodeLevel.ERROR, Resource.WriteAnAdministrator, ex.Message).ToString() }));
            }
        }
Exemple #2
0
        public ActionResult MainTable(string code, DateTime?date)
        {
            var model = new ReservationView();

            try
            {
                model.Date = date ?? DateTime.Now.Date;

                using (IUnitOfWork uow = new UnitOfWork(new DbContextWrap()))
                {
                    if (tables == null)
                    {
                        tables = repository.GetAll <TableModel>(uow).ToList();
                    }
                    model.Tables = tables;
                    if (times == null)
                    {
                        times = timeManager.GetTimesForDayOfTheWeek(uow, model.Date);
                        if (!times.Any())
                        {
                            times     = repository.GetAll <TimeModel>(uow).ToList();
                            model.Day = new DayReservation(true);
                        }
                    }
                    model.Times = times;

                    model.IsPicked = reservationManager.GetPickedForDateAndUser(uow, model.Date, User.Identity.GetUserId()).Any();
                    if (!model.Day.IsCancelled)
                    {
                        model.Day = reservationManager.GetReservationsForDate(uow, model.Date, tables, User.Identity.GetUserId());
                    }
                }

                model.ReturnCode = ReturnCode.FromString(code) ?? new ReturnCode(ReturnCodeLevel.RELOAD, Resource.ReloadOK, null);

                ModelState.Clear();
            }
            catch (Exception ex)
            {
                model.ReturnCode.Error(ex.Message);
                logger.Error(ex.Message);
            }

            return(View(model));
        }