예제 #1
0
        public void Insert(RouteBindingModel model)
        {
            using (var context = new UrskiyPeriodDatabase())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        if (context.Routes.FirstOrDefault(rec => rec.Name == model.Name) != null)
                        {
                            return;
                        }

                        Route route = CreateModel(new Route(), model);
                        context.Routes.Add(route);
                        context.SaveChanges();
                        CreateModel(route, model, context);

                        transaction.Commit();
                    }
                    catch
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
예제 #2
0
 private void buttonSave_Click(object sender, EventArgs e)
 {
     try
     {
         RouteBindingModel model = new RouteBindingModel
         {
             Name          = RouteName,
             Cost          = picked.Sum(x => x.Price),
             DateVisit     = Date,
             Count         = picked.Count,
             RouteReverces = picked.ToDictionary(x => x.Id, x => x.Name),
             UserId        = Program.User.Id
         };
         if (id.HasValue)
         {
             model.Id = id;
         }
         _routeLogic.CreateOrUpdate(model);
         DialogResult = DialogResult.OK;
         Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return;
     }
 }
예제 #3
0
        private Route CreateModel(Route route, RouteBindingModel model, UrskiyPeriodDatabase context)
        {
            route = CreateModel(route, model);

            if (model.Id.HasValue)
            {
                var routeReserve = context.RouteReserves.Where(rec =>
                                                               rec.RouteId == model.Id.Value).ToList();
                // удаляем те, которых нет в модели
                context.RouteReserves.RemoveRange(routeReserve.Where(rec =>
                                                                     !model.RouteReverces.ContainsKey(rec.ReserveId)).ToList());
                context.SaveChanges();

                foreach (var Reserve in routeReserve)
                {
                    model.RouteReverces.Remove(Reserve.ReserveId);
                }
            }

            foreach (var routeReserve in model.RouteReverces)
            {
                context.RouteReserves.Add(new RouteReserve
                {
                    ReserveId = routeReserve.Key,
                    RouteId   = route.Id
                });
            }
            context.SaveChanges();
            return(route);
        }
예제 #4
0
 public void Update(RouteBindingModel model)
 {
     using (var context = new UrskiyPeriodDatabase())
     {
         using (var transaction = context.Database.BeginTransaction())
         {
             try
             {
                 var route = context.Routes.FirstOrDefault(rec => rec.Id == model.Id);
                 if (route == null)
                 {
                     throw new Exception("Маршрут не найден");
                 }
                 CreateModel(route, model, context);
                 context.SaveChanges();
                 transaction.Commit();
             }
             catch
             {
                 transaction.Rollback();
                 throw;
             }
         }
     }
 }
 private void buttonSave_Click(object sender, EventArgs e)
 {
     if (string.IsNullOrEmpty(textBoxCityFrom.Text))
     {
         MessageBox.Show("Введите родной город", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return;
     }
     if (string.IsNullOrEmpty(textBoxCityTo.Text))
     {
         MessageBox.Show("Введите город путешествия", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return;
     }
     try
     {
         RouteBindingModel model = new RouteBindingModel
         {
             Cityfrom = textBoxCityFrom.Text,
             Cityto   = textBoxCityTo.Text
         };
         if (Id.HasValue)
         {
             model.Id = Id;
         }
         _logicR.CreateOrUpdate(model);
         MessageBox.Show("Успешно", "Сохранено",
                         MessageBoxButtons.OK, MessageBoxIcon.Information);
         Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.InnerException.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
예제 #6
0
 public void Insert(RouteBindingModel model)
 {
     using (var context = new TravelAgencyContext())
     {
         context.Route.Add(CreateModel(model, new Route()));
         context.SaveChanges();
     }
 }
예제 #7
0
 private Route CreateModel(Route route, RouteBindingModel model)
 {
     route.Cost      = model.Cost;
     route.Count     = model.Count;
     route.Name      = model.Name;
     route.DateVisit = model.DateVisit;
     route.UserId    = model.UserId.Value;
     return(route);
 }
 public void CreateOrUpdate(RouteBindingModel model)
 {
     if (model.Id.HasValue)
     {
         _routeStorage.Update(model);
     }
     else
     {
         _routeStorage.Insert(model);
     }
 }
        public void Delete(RouteBindingModel model)
        {
            var element = _routeStorage.GetElement(new RouteBindingModel
            {
                Id = model.Id
            });

            if (element == null)
            {
                throw new Exception("Элемент не найден");
            }
            _routeStorage.Delete(model);
        }
예제 #10
0
 public void Delete(RouteBindingModel model)
 {
     using (var context = new UrskiyPeriodDatabase())
     {
         var route = context.Routes.FirstOrDefault(rec => rec.Id == model.Id);
         if (route == null)
         {
             throw new Exception("Маршрут не найден");
         }
         context.Routes.Remove(route);
         context.SaveChanges();
     }
 }
예제 #11
0
 public void Update(RouteBindingModel model)
 {
     using (var context = new TravelAgencyContext())
     {
         var element = context.Route.FirstOrDefault(rec => rec.Routeid == model.Id);
         if (element == null)
         {
             throw new Exception("Маршрут не найден");
         }
         CreateModel(model, element);
         context.SaveChanges();
     }
 }
예제 #12
0
 public List <RouteViewModel> Read(RouteBindingModel model)
 {
     SaveToDatabase();
     return(Routes
            .Where(rec => model == null || rec.Id == model.Id)
            .Select(rec => new RouteViewModel
     {
         Id = rec.Id,
         RouteName = rec.RouteName,
         StartRoute = rec.StartRoute,
         Cost = rec.Cost,
     })
            .ToList());
 }
예제 #13
0
 public List <RouteViewModel> GetFilteredList(RouteBindingModel model)
 {
     if (model == null)
     {
         return(null);
     }
     using (var context = new TravelAgencyContext())
     {
         return(context.Route.Include(x => x.Transport)
                .Where(rec => rec.Cityto == model.Cityto)
                .Select(CreateModel)
                .ToList());
     }
 }
예제 #14
0
 public RouteViewModel GetElement(RouteBindingModel model)
 {
     if (model == null)
     {
         return(null);
     }
     using (var context = new TravelAgencyContext())
     {
         var route = context.Route.Include(x => x.Transport)
                     .FirstOrDefault(rec => rec.Routeid == model.Id);
         return(route != null?CreateModel(route) :
                    null);
     }
 }
 public List <RouteViewModel> Read(RouteBindingModel model)
 {
     if (model == null)
     {
         return(_routeStorage.GetFullList());
     }
     if (model.Id.HasValue)
     {
         return(new List <RouteViewModel> {
             _routeStorage.GetElement(model)
         });
     }
     return(_routeStorage.GetFilteredList(model));
 }
예제 #16
0
 public RouteViewModel GetElement(RouteBindingModel model)
 {
     if (model == null)
     {
         return(null);
     }
     using (var context = new UrskiyPeriodDatabase())
     {
         var route = context.Routes.Include(x => x.User).Include(x => x.RouteReserve).ThenInclude(x => x.Reserve)
                     .ThenInclude(x => x.Payment)
                     .Include(x => x.CostItemRoute).ThenInclude(x => x.CostItem).
                     FirstOrDefault(rec => rec.Id == model.Id || rec.Name == model.Name);
         return(route != null?CreateModel(route) : null);
     }
 }
예제 #17
0
 public void Delete(RouteBindingModel model)
 {
     using (var context = new TravelAgencyContext())
     {
         Route element = context.Route.FirstOrDefault(rec => rec.Routeid == model.Id);
         if (element != null)
         {
             context.Route.Remove(element);
             context.SaveChanges();
         }
         else
         {
             throw new Exception("Маршрут не найден");
         }
     }
 }
예제 #18
0
 public List <RouteViewModel> GetFilteredList(RouteBindingModel model)
 {
     using (var context = new UrskiyPeriodDatabase())
     {
         return(context.Routes.Include(x => x.User).Include(x => x.RouteReserve).ThenInclude(x => x.Reserve)
                .ThenInclude(x => x.Payment)
                .Include(x => x.CostItemRoute).ThenInclude(x => x.CostItem)
                .Where(rec =>
                       // сортируем по клиенту
                       (model.UserId.HasValue && !model.DateFrom.HasValue && model.PickedRoutes == null && model.UserId == rec.UserId) ||
                       // маршруты без статей затрат для заполнения бд
                       (!model.DateFrom.HasValue && model.PickedRoutes == null && !model.UserId.HasValue && model.NoCost.HasValue &&
                        model.NoCost.Value && rec.CostItemRoute.Count == 0))
                .ToList().Select(CreateModel).ToList());
     }
 }
예제 #19
0
 public List <RouteViewModel> GetFilteredByPickList(RouteBindingModel model)
 {
     using (var context = new UrskiyPeriodDatabase())
     {
         return(context.Routes.Include(x => x.User).Include(x => x.RouteReserve).ThenInclude(x => x.Reserve)
                .Where(x => model.PickedRoutes.Contains(x.Id)).Select(x => new RouteViewModel
         {
             Reserves = x.RouteReserve.Select(rec => new ReserveViewModel
             {
                 Name = rec.Reserve.Name,
                 Price = rec.Reserve.Price
             }).ToList(),
             Name = x.Name,
             Cost = x.Cost
         }).ToList());
     }
 }
예제 #20
0
 public void CreateOrUpdate(RouteBindingModel model)
 {
     if (model.Id.HasValue)
     {
         _routeStorage.Update(model);
     }
     else
     {
         var element = _routeStorage.GetElement(new RouteBindingModel
         {
             Name = model.Name
         });
         if (element != null && element.Id != model.Id)
         {
             throw new Exception("Уже есть маршрут с таким названием");
         }
         _routeStorage.Insert(model);
     }
 }
예제 #21
0
 public List <RouteViewModel> GetFilteredByDateList(RouteBindingModel model)
 {
     using (var context = new UrskiyPeriodDatabase())
     {
         return(context.Routes.Include(x => x.User).Include(x => x.CostItemRoute).ThenInclude(x => x.CostItem)
                .Where(rec => model.DateFrom.HasValue && model.DateFrom.HasValue &&
                       model.DateFrom.Value.Date <= rec.DateVisit.Date &&
                       rec.DateVisit.Date <= model.DateTo.Value.Date && model.UserId == rec.UserId)
                .Select(x => new RouteViewModel
         {
             CostItems = x.CostItemRoute.Select(rec => new CostItemViewModel
             {
                 Name = rec.CostItem.Name,
                 Sum = rec.CostItem.Sum
             }).ToList(),
             Name = x.Name,
             Cost = x.Cost,
             DateVisit = x.DateVisit,
             Count = x.Count
         }).ToList());
     }
 }
예제 #22
0
 public List <RouteViewModel> Read(RouteBindingModel model)
 {
     if (model == null)
     {
         return(_routeStorage.GetFullList());
     }
     if (model.Id.HasValue || model.Name != null)
     {
         return(new List <RouteViewModel> {
             _routeStorage.GetElement(model)
         });
     }
     if (model.DateFrom.HasValue && model.DateTo.HasValue && model.UserId.HasValue && model.PickedRoutes == null)
     {
         return(_routeStorage.GetFilteredByDateList(model));
     }
     if (model.PickedRoutes != null && !model.DateFrom.HasValue)
     {
         return(_routeStorage.GetFilteredByPickList(model));
     }
     return(_routeStorage.GetFilteredList(model));
 }
예제 #23
0
 private Route CreateModel(RouteBindingModel model, Route route)
 {
     route.Сityfrom = model.Cityfrom;
     route.Cityto   = model.Cityto;
     return(route);
 }
 public void DeleteRoute(RouteBindingModel model) => _route.Delete(model);
 public void CreateRoute(RouteBindingModel model) => _route.CreateOrUpdate(model);