예제 #1
0
 protected override List <T> GetList <T>()
 {
     using (var context = new SecureShopDatabase())
     {
         return(context.Set <T>().ToList());
     }
 }
 public void Delete(KomlectConcreteBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         using (var transaction = context.Database.BeginTransaction())
         {
             try
             {
                 // удаяем записи по компонентам при удалении изделия
                 context.KomlectComponents.RemoveRange(context.KomlectComponents.Where(rec =>
                                                                                       rec.KomlectId == model.Id));
                 Komlect element = context.Komlects.FirstOrDefault(rec => rec.Id == model.Id);
                 if (element != null)
                 {
                     context.Komlects.Remove(element);
                     context.SaveChanges();
                 }
                 else
                 {
                     throw new Exception("Элемент не найден");
                 }
                 transaction.Commit();
             }
             catch (Exception)
             {
                 transaction.Rollback();
                 throw;
             }
         }
     }
 }
예제 #3
0
 public List <OrderViewModel> Read(OrderBindingModel model)
 {
     using (var source = new SecureShopDatabase())
     {
         return(source.Orders.Where(
                    rec => model == null ||
                    (model.ImplementerId.HasValue && rec.ImplementerId == model.ImplementerId && rec.Status == OrderStatus.Выполняется) ||
                    (rec.Id == model.Id && model.Id.HasValue) ||
                    (model.FreeOrders.HasValue && model.FreeOrders.Value && !rec.ImplementerId.HasValue) ||
                    (model.DateFrom.HasValue && model.DateTo.HasValue && rec.DateCreate >= model.DateFrom && rec.DateCreate <= model.DateTo) ||
                    (model.ClientId.HasValue && rec.ClientId == model.ClientId)).Include(rec => rec.Komlect)
                .Include(rec => rec.Komlect)
                .Include(rec => rec.Client)
                .Include(rec => rec.Implementer)
                .Select(rec => new OrderViewModel
         {
             Id = rec.Id,
             KomlectId = rec.KomlectId,
             ImplementerId = rec.ImplementerId,
             ClientId = rec.ClientId,
             DateCreate = rec.DateCreate,
             DateImplement = rec.DateImplement,
             Status = rec.Status,
             Count = rec.Count,
             Sum = rec.Sum,
             ClientFIO = rec.Client.ClientFIO,
             KomlectName = rec.Komlect.KomlectName,
             ImplementerFIO = rec.ImplementerId.HasValue ? rec.Implementer.ImplementerFIO : string.Empty
         })
                .ToList());
     }
 }
 public void CreateOrUpdate(ComponentBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         Component element = context.Components.FirstOrDefault(rec =>
                                                               rec.ComponentName == model.ComponentName && rec.Id != model.Id);
         if (element != null)
         {
             throw new Exception("Уже есть компонент с таким названием");
         }
         if (model.Id.HasValue)
         {
             element = context.Components.FirstOrDefault(rec => rec.Id ==
                                                         model.Id);
             if (element == null)
             {
                 throw new Exception("Элемент не найден");
             }
         }
         else
         {
             element = new Component();
             context.Components.Add(element);
         }
         element.ComponentName = model.ComponentName;
         context.SaveChanges();
     }
 }
예제 #5
0
 public void CreateOrUpdate(OrderBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         Order element;
         if (model.Id.HasValue)
         {
             element = context.Orders.FirstOrDefault(rec => rec.Id ==
                                                     model.Id);
             if (element == null)
             {
                 throw new Exception("Элемент не найден");
             }
         }
         else
         {
             element = new Order();
             context.Orders.Add(element);
         }
         element.KomlectId     = model.KomlectId == 0 ? element.KomlectId : model.KomlectId;
         element.ClientId      = model.ClientId == null ? element.ClientId : (int)model.ClientId;
         element.ImplementerId = model.ImplementerId;
         element.Count         = model.Count;
         element.Sum           = model.Sum;
         element.Status        = model.Status;
         element.DateCreate    = model.DateCreate;
         element.DateImplement = model.DateImplement;
         context.SaveChanges();
     }
 }
예제 #6
0
 public void CreateOrUpdate(ClientBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         Client element = context.Clients.FirstOrDefault(rec => rec.Email == model.Email && rec.Id != model.Id);
         if (element != null)
         {
             throw new Exception("Уже есть клиент с таким логином");
         }
         if (model.Id.HasValue)
         {
             element = context.Clients.FirstOrDefault(rec => rec.Id == model.Id);
             if (element == null)
             {
                 throw new Exception("Элемент не найден");
             }
         }
         else
         {
             element = new Client();
             context.Clients.Add(element);
         }
         element.Email     = model.Email;
         element.ClientFIO = model.ClientFIO;
         element.Password  = model.Password;
         context.SaveChanges();
     }
 }
예제 #7
0
 protected override List <PropertyInfo> GetFullList()
 {
     using (var context = new SecureShopDatabase())
     {
         Type type = context.GetType();
         return(type.GetProperties().Where(x =>
                                           x.PropertyType.FullName.StartsWith("Microsoft.EntityFrameworkCore.DbSet")).ToList());
     }
 }
 public List <ComponentViewModel> Read(ComponentBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         return(context.Components
                .Where(rec => model == null || rec.Id == model.Id)
                .Select(rec => new ComponentViewModel
         {
             Id = rec.Id,
             ComponentName = rec.ComponentName
         })
                .ToList());
     }
 }
 public List <MessageInfoViewModel> Read(MessageInfoBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         return(context.MessageInfoes
                .Where(rec => model == null || rec.ClientId == model.ClientId)
                .Select(rec => new MessageInfoViewModel
         {
             MessageId = rec.MessageId,
             SenderName = rec.SenderName,
             DateDelivery = rec.DateDelivery,
             Subject = rec.Subject,
             Body = rec.Body
         })
                .ToList());
     }
 }
 public void Delete(ComponentBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         Component element = context.Components.FirstOrDefault(rec => rec.Id ==
                                                               model.Id);
         if (element != null)
         {
             context.Components.Remove(element);
             context.SaveChanges();
         }
         else
         {
             throw new Exception("Элемент не найден");
         }
     }
 }
 public List <KomlectViewModel> Read(KomlectConcreteBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         return(context.Komlects
                .Where(rec => model == null || rec.Id == model.Id)
                .ToList()
                .Select(rec => new KomlectViewModel
         {
             Id = rec.Id,
             KomlectName = rec.KomlectName,
             Price = rec.Price,
             KomlectComponents = context.KomlectComponents
                                 .Include(recPC => recPC.Component)
                                 .Where(recPC => recPC.KomlectId == rec.Id)
                                 .ToDictionary(recPC => recPC.ComponentId, recPC =>
                                               (recPC.Component?.ComponentName, recPC.Count))
         })
예제 #12
0
 public List <ImplementerViewModel> Read(ImplementerBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         return(context.Implementers
                .Where(
                    rec => model == null ||
                    rec.Id == model.Id
                    )
                .Select(rec => new ImplementerViewModel
         {
             Id = rec.Id,
             ImplementerFIO = rec.ImplementerFIO,
             WorkingTime = rec.WorkingTime,
             PauseTime = rec.PauseTime
         })
                .ToList());
     }
 }
예제 #13
0
        public void CreateOrUpdate(ImplementerBindingModel model)
        {
            using (var context = new SecureShopDatabase())
            {
                Implementer element = context.Implementers.FirstOrDefault(rec => rec.Id == model.Id);

                if (element == null)
                {
                    element = new Implementer();
                    context.Implementers.Add(element);
                }

                element.ImplementerFIO = model.ImplementerFIO;
                element.WorkingTime    = model.WorkingTime;
                element.PauseTime      = model.PauseTime;

                context.SaveChanges();
            }
        }
예제 #14
0
 public List <ClientViewModel> Read(ClientBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         return(context.Clients
                .Where(
                    rec => model == null ||
                    rec.Id == model.Id ||
                    rec.Email == model.Email && rec.Password == model.Password
                    )
                .Select(rec => new ClientViewModel
         {
             Id = rec.Id,
             ClientFIO = rec.ClientFIO,
             Email = rec.Email,
             Password = rec.Password
         })
                .ToList());
     }
 }
 public void Create(MessageInfoBindingModel model)
 {
     using (var context = new SecureShopDatabase())
     {
         MessageInfo element = context.MessageInfoes.FirstOrDefault(rec =>
                                                                    rec.MessageId == model.MessageId);
         if (element != null)
         {
             throw new Exception("Уже есть письмо с таким идентификатором");
         }
         int?clientId = context.Clients.FirstOrDefault(rec => rec.Email ==
                                                       model.FromMailAddress)?.Id;
         context.MessageInfoes.Add(new MessageInfo
         {
             MessageId    = model.MessageId,
             ClientId     = clientId,
             SenderName   = model.FromMailAddress,
             DateDelivery = model.DateDelivery,
             Subject      = model.Subject,
             Body         = model.Body
         });
         context.SaveChanges();
     }
 }
        public void CreateOrUpdate(KomlectConcreteBindingModel model)
        {
            using (var context = new SecureShopDatabase())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        Komlect element = context.Komlects.FirstOrDefault(rec =>
                                                                          rec.KomlectName == model.KomlectName && rec.Id != model.Id);
                        if (element != null)
                        {
                            throw new Exception("Уже есть изделие с таким названием");
                        }
                        if (model.Id.HasValue)
                        {
                            element = context.Komlects.FirstOrDefault(rec => rec.Id ==
                                                                      model.Id);
                            if (element == null)
                            {
                                throw new Exception("Элемент не найден");
                            }
                        }
                        else
                        {
                            element = new Komlect();
                            context.Komlects.Add(element);
                        }
                        element.KomlectName = model.KomlectName;
                        element.Price       = model.Price;
                        context.SaveChanges();
                        if (model.Id.HasValue)
                        {
                            var KomlectComponents = context.KomlectComponents.Where(rec
                                                                                    => rec.KomlectId == model.Id.Value).ToList();
                            // удалили те, которых нет в модели

                            context.KomlectComponents.RemoveRange(KomlectComponents.Where(rec =>
                                                                                          !model.KomlectComponents.ContainsKey(rec.ComponentId)).ToList());
                            context.SaveChanges();
                            // обновили количество у существующих записей
                            foreach (var updateComponent in KomlectComponents)
                            {
                                updateComponent.Count =
                                    model.KomlectComponents[updateComponent.ComponentId].Item2;

                                model.KomlectComponents.Remove(updateComponent.ComponentId);
                            }
                            context.SaveChanges();
                        }
                        // добавили новые
                        foreach (var pc in model.KomlectComponents)
                        {
                            context.KomlectComponents.Add(new KomlectComponent
                            {
                                KomlectId   = element.Id,
                                ComponentId = pc.Key,
                                Count       = pc.Value.Item2
                            });
                            context.SaveChanges();
                        }
                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }