Пример #1
0
 public Bank CreateBank(Bank bank)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = bank.ToEntity(database);
         database.AddToBank(entity);
         database.SaveChanges();
         var result = new Bank(database.Bank.Execute(MergeOption.NoTracking).Single(b => b.ID == entity.ID));
         Cache.Instance.Banks[result.ID] = result;
         return result;
     }
 }
Пример #2
0
 public Plant CreatePlant(Plant plant)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = plant.ToEntity(database);
         entity.ID = database.Plant.Execute(MergeOption.NoTracking).Any() ? database.Plant.Execute(MergeOption.NoTracking).Max(p => p.ID) + 1 : 0;
         database.AddToPlant(entity);
         database.SaveChanges();
         var result = new Plant(database.Plant.Execute(MergeOption.NoTracking).Single(p => p.ID == entity.ID), true);
         result.UpdateParent();
         Cache.Instance.Plants[result.ID] = result;
         return result;
     }
 }
Пример #3
0
 public Employee CreateEmployee(Employee employee)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = employee.ToEntity(database);
         entity.ID = database.Employee.Execute(MergeOption.NoTracking).Any() ? database.Employee.Execute(MergeOption.NoTracking).Max(e => e.ID) + 1 : 0;
         long subjectID = employee.Subject.ID;
         entity.SubjectID = subjectID;
         database.AddToEmployee(entity);
         database.SaveChanges();
         employee = new Employee(database.Employee.Execute(MergeOption.NoTracking).First(e => e.ID == entity.ID));
         employee.Subject = Cache.Instance.Subjects[subjectID];
         employee.Subject.Employees[employee.ID] = employee;
         return employee;
     }
 }
Пример #4
0
 public bool ChangePassword(long userId, string oldPassword, string newPassword)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var user = database.Employee.FirstOrDefault(e => e.ID == userId);
         if (user == null) return false;
         if (user.Password != oldPassword) return false;
         user.Password = newPassword;
         try
         {
             database.SaveChanges();
             Cache.Instance.Subjects[user.SubjectID].Employees[user.ID].Password = newPassword;
             return true;
         }
         catch
         {
             return false;
         }
     }
 }
Пример #5
0
 public void DeleteSampleSelectionRequest(long id)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var document = database.SampleSelectionRequest.First(doc => doc.DocumentID == id);
         // Здесь не нужна проверка на даты, потому что заказ может быть проплачен заранее
         if (!document.HeaderReference.IsLoaded)
         {
             document.HeaderReference.Load();
         }
         if (document.Header.StateEnum == DocumentStateEnum.Active)
         {
             document.Header.StateEnum = DocumentStateEnum.Deleted;
         }
         else
         {
             throw new Exception("Нельзя удалить неактуальную версию или уже удалённый документ.");
         }
         database.SaveChanges();
     }
 }
Пример #6
0
 public Subject EditSubject(Subject subject)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = database.Subject.Single(s => s.ID == subject.ID);
         if (!entity.Employees.IsLoaded)
         {
             entity.Employees.Load();
         }
         subject.ApplyChanges(database, entity);
         database.SaveChanges();
         var result = new Subject(entity);
         Cache.Instance.Subjects[result.ID] = result;
         return result;
     }
 }
Пример #7
0
 public SampleSelectionRequest EditSampleSelectionRequest(SampleSelectionRequest document)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = document.ToEntity(database);
         entity.Header.StateEnum = DocumentStateEnum.Active;
         entity.Header.PreviousVersionID = document.ID;
         entity.Header.CreationDate = DateTime.Now; // потому что иначе в значение пойдёт DateTime.MinVaue
         database.AddToSampleSelectionRequest(entity);
         var oldDocument = database.DocumentHeader.First(d => d.ID == document.ID);
         if (oldDocument.StateEnum == DocumentStateEnum.Active)
         {
             oldDocument.StateEnum = DocumentStateEnum.Edited;
         }
         database.SaveChanges();
         long newId = entity.DocumentID;
         return new SampleSelectionRequest(database.SampleSelectionRequest.Execute(MergeOption.NoTracking).Single(doc => doc.DocumentID == newId));
     }
 }
Пример #8
0
 public ReproductionStep EditReproductionStep(ReproductionStep reproductionStep)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = database.ReproductionStep.Single(e => e.ID == reproductionStep.ID);
         reproductionStep.ApplyChanges(database, entity);
         database.SaveChanges();
         var result = new ReproductionStep(entity);
         Cache.Instance.Plants[result.Plant.ID].ReproductionSteps[result.ID] = result;
         return result;
     }
 }
Пример #9
0
 public PlantVariety EditPlantVariety(PlantVariety plantVariety)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = database.PlantVariety.Single(e => e.ID == plantVariety.ID);
         plantVariety.ApplyChanges(database, entity);
         database.SaveChanges();
         var result = new PlantVariety(entity);
         Cache.Instance.Plants[result.Plant.ID].Varieties[result.ID] = result;
         return result;
     }
 }
Пример #10
0
 public AnalyzePriceList CreatePriceList(AnalyzePriceList priceList)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = priceList.ToEntity(database);
         database.AddToAnalyzePriceList(entity);
         database.SaveChanges();
         var result = new AnalyzePriceList(database.AnalyzePriceList.Execute(MergeOption.NoTracking).Single(pl => pl.ID == entity.ID), true);
         Cache.Instance.PriceLists[result.ID] = result;
         return result;
     }
 }
Пример #11
0
 public ReproductionStep CreateReproductionStep(ReproductionStep reproductionStep)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = reproductionStep.ToEntity(database);
         entity.ID = database.ReproductionStep.Execute(MergeOption.NoTracking).Any() ? database.ReproductionStep.Execute(MergeOption.NoTracking).Max(rs => rs.ID) + 1 : 0;
         database.AddToReproductionStep(entity);
         database.SaveChanges();
         var newEntity = database.ReproductionStep.Execute(MergeOption.NoTracking).Single(rs => rs.ID == entity.ID);
         var result = new ReproductionStep(newEntity);
         var plant = Cache.Instance.Plants[newEntity.PlantID];
         result.Plant = plant;
         plant.ReproductionSteps[result.ID] = result;
         return result;
     }
 }
Пример #12
0
 public List<AnalyzePrice> UploadPrices(long priceListId, List<AnalyzePrice> prices)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = database.AnalyzePriceList.Single(pl => pl.ID == priceListId);
         if (!entity.Prices.IsLoaded)
         {
             entity.Prices.Load();
         }
         entity.Prices.Clear();
         foreach (var price in prices)
         {
             entity.Prices.Add(price.ToEntity(database));
         }
         database.SaveChanges();
         var priceList = new AnalyzePriceList(database.AnalyzePriceList.Execute(MergeOption.NoTracking).First(pl => pl.ID == priceListId), true);
         Cache.Instance.PriceLists[priceListId] = priceList;
         return priceList.Prices.ToList();
     }
 }
Пример #13
0
 public SampleJournal GetSampleJournal(DateTime fromDate, DateTime toDate)
 {
     var report = new SampleJournal(fromDate, toDate);
     using (var database = new Core.Entity.SeedsEntities())
     {
         var documents = database.SampleSelectionRequest.Execute(MergeOption.NoTracking)
             .Where(doc => doc.Header.CreationDate >= fromDate && doc.Header.CreationDate <= toDate)
             .Where(doc => doc.Header.StateID == (short) DocumentStateEnum.Active)
             .OrderBy(doc => doc.Header.CreationDate);
         foreach (var document in documents)
         {
             report.Items.Add(new SampleJournalItem(report.Items.Count + 1, new SampleSelectionRequest(document)));
         }
     }
     return report;
 }
Пример #14
0
 public void DeleteReproductionSteps(List<long> ids)
 {
     var plants = new Dictionary<long, List<long>>();
     using (var database = new Core.Entity.SeedsEntities())
     {
         foreach (var reproductionStep in database.ReproductionStep.Where(e => ids.Contains(e.ID)))
         {
             List<long> plant;
             if (!plants.TryGetValue(reproductionStep.PlantID, out plant))
             {
                 plant = new List<long>();
             }
             plant.Add(reproductionStep.ID);
             database.ReproductionStep.DeleteObject(reproductionStep);
         }
         database.SaveChanges();
         foreach (long plantId in plants.Keys)
         {
             var plant = Cache.Instance.Plants[plantId];
             foreach (long reproductionStepId in plants[plantId])
             {
                 plant.ReproductionSteps.Remove(reproductionStepId);
             }
         }
     }
 }
Пример #15
0
 public void DeleteEmployees(List<long> ids)
 {
     var subjects = new Dictionary<long, List<long>>();
     using (var database = new Core.Entity.SeedsEntities())
     {
         foreach (var employee in database.Employee.Where(e => ids.Contains(e.ID)))
         {
             List<long> subject;
             if (!subjects.TryGetValue(employee.SubjectID, out subject))
             {
                 subject = new List<long>();
             }
             subject.Add(employee.ID);
             database.Employee.DeleteObject(employee);
         }
         database.SaveChanges();
         foreach (long subjectId in subjects.Keys)
         {
             var subject = Cache.Instance.Subjects[subjectId];
             foreach (long employeeId in subjects[subjectId])
             {
                 subject.Employees.Remove(employeeId);
             }
         }
     }
 }
Пример #16
0
 public Subject CreateSubject(Subject subject)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = subject.ToEntity(database);
         database.AddToSubject(entity);
         database.SaveChanges();
         var result = new Subject(database.Subject.Execute(MergeOption.NoTracking).Single(s => s.ID == entity.ID));
         result.UpdateParent();
         Cache.Instance.Subjects[result.ID] = result;
         return result;
     }
 }
Пример #17
0
 public SampleSelectionRequest CreateSampleSelectionRequest(SampleSelectionRequest document)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = document.ToEntity(database);
         entity.Header.CreationDate = DateTime.Now; // потому что иначе в значение пойдёт DateTime.MinVaue
         database.AddToSampleSelectionRequest(entity);
         database.SaveChanges();
         return new SampleSelectionRequest(database.SampleSelectionRequest.Execute(MergeOption.NoTracking).Single(doc => doc.DocumentID == entity.DocumentID));
     }
 }
Пример #18
0
 public List<SampleSelectionRequest> GetSampleSelectionRequests(bool actualOnly = true, RequestStateEnum? filterState = null)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         IEnumerable<Core.Entity.SampleSelectionRequest> requests = database.SampleSelectionRequest.Execute(MergeOption.NoTracking);
         if (actualOnly)
         {
             requests = requests.Where(doc => doc.Header.StateID == (short) DocumentStateEnum.Active);
         }
         if (filterState != null)
         {
             short filterStateNumber = (short) filterState.Value;
             requests = requests.Where(doc => (filterStateNumber & doc.RequestStateID) == doc.RequestStateID);
         }
         return requests.Select(doc => new SampleSelectionRequest(doc)).ToList();
     }
 }
Пример #19
0
 public Bank EditBank(Bank bank)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = database.Bank.Single(b => b.ID == bank.ID);
         bank.ApplyChanges(database, entity);
         database.SaveChanges();
         var result = new Bank(entity);
         Cache.Instance.Banks[result.ID] = result;
         return result;
     }
 }
Пример #20
0
 public Employee EditEmployee(Employee employee)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = database.Employee.Single(e => e.ID == employee.ID);
         employee.ApplyChanges(database, entity);
         database.SaveChanges();
         var result = new Employee(entity);
         Cache.Instance.Subjects[result.Subject.ID].Employees[result.ID] = result;
         return result;
     }
 }
Пример #21
0
 public Plant EditPlant(Plant plant)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = database.Plant.Single(p => p.ID == plant.ID);
         plant.ApplyChanges(database, entity);
         database.SaveChanges();
         var result = new Plant(entity, true, true);
         Cache.Instance.Plants[result.ID] = result;
         return result;
     }
 }
Пример #22
0
 public PlantVariety CreatePlantVariety(PlantVariety plantVariety)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = plantVariety.ToEntity(database);
         entity.ID = database.PlantVariety.Execute(MergeOption.NoTracking).Any() ? database.PlantVariety.Execute(MergeOption.NoTracking).Max(pv => pv.ID) + 1 : 0;
         database.AddToPlantVariety(entity);
         database.SaveChanges();
         var newEntity = database.PlantVariety.Execute(MergeOption.NoTracking).Single(v => v.ID == entity.ID);
         var result = new PlantVariety(newEntity);
         var plant = Cache.Instance.Plants[newEntity.PlantID];
         result.Plant = plant;
         plant.Varieties[result.ID] = result;
         return result;
     }
 }
Пример #23
0
 public Position CreatePosition(Position position)
 {
     using (var database = new Core.Entity.SeedsEntities())
     {
         var entity = position.ToEntity(database);
         entity.ID = database.Position.Execute(MergeOption.NoTracking).Any() ? database.Position.Execute(MergeOption.NoTracking).Max(p => p.ID) + 1 : 0;
         database.AddToPosition(entity);
         database.SaveChanges();
         var newEntity = database.Position.Execute(MergeOption.NoTracking).Single(p => p.ID == entity.ID);
         var result = new Position(newEntity);
         Cache.Instance.Positions[result.ID] = result;
         return result;
     }
 }