void ExternalEntityChangeEventMethod(DomainModel.NotifyChange.EntityChangeEvent[] changeEvents) { object foundUpdatedObject = changeEvents.FirstOrDefault(e => DomainHelper.EqualDomainObjects(e.Entity, EntityEntryViewModel.Entity)); if (foundUpdatedObject != null && uow.Session.IsOpen && uow.Session.Contains(EntityEntryViewModel.Entity)) { uow.Session.Refresh(EntityEntryViewModel.Entity); } }
public virtual void AddShift(DeliveryShift deliveryShift) { if (Shifts.Any(ds => DomainHelper.EqualDomainObjects(ds, deliveryShift))) { logger.Warn("Смена {0} уже добавлена. Пропускаем...", deliveryShift.Name); return; } ObservableShifts.Add(deliveryShift); }
public virtual void AddNomeclature(Nomenclature nomenclature) { if (Nomenclatures.Any(p => DomainHelper.EqualDomainObjects(p, nomenclature))) { logger.Warn("Номеклатура уже добавлена. Пропускаем..."); return; } ObservableNomenclatures.Add(nomenclature); }
public virtual void UpdateContractTemplate(IUnitOfWork uow) { var newTemplate = Repository.Client.DocTemplateRepository.GetTemplate(uow, ContractType); if (!DomainHelper.EqualDomainObjects(newTemplate, ContractTemplate)) { ContractTemplate = newTemplate; ChangedTemplateFile = null; } }
public override bool Equals(object obj) { var tp = obj as TrackPoint; if (tp != null) { return(DomainHelper.EqualDomainObjects(tp.Track, this.Track) && tp.TimeStamp == this.TimeStamp); } return(false); }
public virtual void AddAnalog(ProtectionTools Analog) { if (Analogs.Any(p => DomainHelper.EqualDomainObjects(p, Analog))) { logger.Warn("Такой аналог уже добавлен. Пропускаем..."); return; } if (DomainHelper.EqualDomainObjects(this, Analog)) { logger.Warn("Нельзя добавлять в качестве аналога себя. Пропускаем..."); return; } ObservableAnalog.Add(Analog); }
private void OnExternalObjectUpdated(object sender, OrmObjectUpdatedEventArgs e) { object foundUpdatedObject = e.UpdatedSubjects.FirstOrDefault(s => DomainHelper.EqualDomainObjects(s, Subject)); if (foundUpdatedObject != null) { //var dlg = DialogHelper.FindParentUowDialog(this); //FIXME Возможно не нужно подписываться пока закомментируем //if (dlg != null && !dlg.Session.Contains (foundUpdatedObject)) // dlg.Session.Refresh (Subject); UpdateWidget(); OnChanged(); } }
void ExternalEntityChangeEventMethod(DomainModel.NotifyChange.EntityChangeEvent[] changeEvents) { object foundUpdatedObject = changeEvents.FirstOrDefault(e => DomainHelper.EqualDomainObjects(e.Entity, Subject)); if (foundUpdatedObject != null) { if (UoW != null && UoW.Session.IsOpen && UoW.Session.Contains(Subject)) { UoW.Session.Refresh(Subject); } UpdateWidget(); OnChanged(); } }
public virtual void AddItem(SubdivisionIssueOperation operation, int count) { if (operation.Issued == 0) { throw new InvalidOperationException("Этот метод можно использовать только с операциями выдачи."); } if (Items.Any(p => DomainHelper.EqualDomainObjects(p.SubdivisionWriteoffOperation?.IssuedOperation, operation))) { logger.Warn("Номенклатура из этой выдачи уже добавлена. Пропускаем..."); return; } ObservableItems.Add(new WriteoffItem(this, operation, count)); }
void YentryreferenceRLTo_Changed(object sender, EventArgs e) { if (yentryreferenceRLTo.Subject == null) { ytreeviewRLTo.ItemsDataSource = null; return; } RouteList routeListTo = yentryreferenceRLTo.Subject as RouteList; RouteList routeListFrom = yentryreferenceRLFrom.Subject as RouteList; if (DomainHelper.EqualDomainObjects(routeListFrom, routeListTo)) { yentryreferenceRLTo.Subject = null; MessageDialogHelper.RunErrorDialog("Вы дурачёк?", "Вы не можете передавать адреса в тот же МЛ, из которого забираете."); return; } if (TabParent != null) { var tab = TabParent.FindTab(DialogHelper.GenerateDialogHashName <RouteList>(routeListTo.Id)); if (!(tab is RouteListClosingDlg)) { if (tab != null) { MessageDialogHelper.RunErrorDialog("Маршрутный лист уже открыт в другой вкладке"); yentryreferenceRLTo.Subject = null; return; } } } CheckSensitivities(); routeListTo.UoW = UoW; IList <RouteListItemNode> items = new List <RouteListItemNode>(); foreach (var item in routeListTo.Addresses) { items.Add(new RouteListItemNode { RouteListItem = item }); } ytreeviewRLTo.ItemsDataSource = items; FillObservableDriverBalance(ObservableDriverBalanceTo, routeListTo); }
void ExternalEntityChangeEventMethod(DomainModel.NotifyChange.EntityChangeEvent[] changeEvents) { var foundUpdatedObject = changeEvents.FirstOrDefault(e => DomainHelper.EqualDomainObjects(e.Entity, EntityEntryViewModel.Entity)); if (foundUpdatedObject != null && uow.Session.IsOpen && uow.Session.Contains(EntityEntryViewModel.Entity)) { if (foundUpdatedObject.EventType == DomainModel.NotifyChange.TypeOfChangeEvent.Delete) { EntityEntryViewModel.Entity = null; } else { uow.Session.Refresh(EntityEntryViewModel.Entity); } } }
private void OnExternalObjectUpdated(object sender, OrmObjectUpdatedEventArgs e) { object foundUpdatedObject = e.UpdatedSubjects.FirstOrDefault(s => DomainHelper.EqualDomainObjects(s, Subject)); if (foundUpdatedObject != null) { var dlg = DialogHelper.FindParentUowDialog(this); if (MyEntityDialogExist) { MyEntityDialog.UoW.Session.Refresh(Subject); } UpdateWidget(); OnChanged(); } }
protected void OnButtonUpdatePricesClicked(object sender, EventArgs e) { var newPricesList = new Dictionary <Price, int>(); int effectedRows = 0; foreach (var item in Entity.ProjectRows) { PriceItem newPriceItem = Repository.PriceRepository.GetLastPriceItem(UoW, item.Fitting, item.SelectedPriceItem?.Price.Provider); if (newPriceItem == null) { continue; } if (!DomainHelper.EqualDomainObjects(newPriceItem, item.SelectedPriceItem)) { effectedRows++; item.SelectedPriceItem = newPriceItem; item.FittingPrice = newPriceItem.Cost; item.PriceCurrency = newPriceItem.Currency; if (newPricesList.ContainsKey(newPriceItem.Price)) { newPricesList[newPriceItem.Price]++; } else { newPricesList.Add(newPriceItem.Price, 1); } } } if (effectedRows == 0) { MessageDialogWorks.RunInfoDialog("Новые цены не найдены!"); } else { MessageDialogWorks.RunInfoDialog(String.Format("Были обновлены цены в {0}.\n" + "Новые цены были получены из {1}:\n" + "{2}", RusNumber.FormatCase(effectedRows, "{0} строке", "{0} строках", "{0} строках"), RusNumber.FormatCase(newPricesList.Count, "{0} прайса", "{0} прайсов", "{0} прайсов"), String.Join("\n", newPricesList.Select(x => String.Format("{0} ({1:d}) - {2}", x.Key.Provider.Name, x.Key.Date, x.Value) )) )); } }
static bool EntityCompare(ref FieldChange change, object valueOld, object valueNew) { if (DomainHelper.EqualDomainObjects(valueOld, valueNew)) { return(false); } change = new FieldChange(); if (valueOld != null) { change.OldValue = HistoryMain.GetObjectTilte(valueOld); change.OldId = DomainHelper.GetId(valueOld); } if (valueNew != null) { change.NewValue = HistoryMain.GetObjectTilte(valueNew); change.NewId = DomainHelper.GetId(valueNew); } return(true); }
/// <summary> /// Сравниваем все поля на равенство, ссылки на доменные объекты сравниваем по ID. /// </summary> /// <returns><c>true</c> если поля объектов одинаковы.</returns> /// <param name="object1">Object1.</param> /// <param name="object2">Object2.</param> public static bool CompareFields <T> (T object1, T object2) where T : class { Type type = object1.GetType(); List <FieldInfo> fields = new List <FieldInfo> (); while (type != null) { fields.AddRange(type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)); type = type.BaseType; } foreach (FieldInfo f in fields) { object value = f.GetValue(object1); if (value is IDomainObject) { if (!DomainHelper.EqualDomainObjects(value, f.GetValue(object2))) { return(false); } } else { if (value == null) { if (f.GetValue(object2) != null) { return(false); } } else if (!value.Equals(f.GetValue(object2))) { return(false); } } } return(true); }
public void MakeChange( SettingsMatchEmployeesViewModel settings, EmployeeCard employee, SheetRowEmployee row, ImportedColumn <DataTypeEmployee> column, ChangeType rowChange, IUnitOfWork uow) { var value = row.CellStringValue(column.Index); var dataType = column.DataType; if (String.IsNullOrWhiteSpace(value)) { row.AddColumnChange(column, ChangeType.NotChanged); return; } switch (dataType) { case DataTypeEmployee.CardKey: row.ChangedColumns.Add(column, CompareString(employee.CardKey, value, rowChange)); break; case DataTypeEmployee.PersonnelNumber: row.ChangedColumns.Add(column, CompareString(employee.PersonnelNumber, (settings.ConvertPersonnelNumber ? EmployeeParse.ConvertPersonnelNumber(value) : value)?.Trim(), rowChange)); break; case DataTypeEmployee.Phone: row.ChangedColumns.Add(column, ComparePhone(employee.PhoneNumber, value, rowChange)); break; case DataTypeEmployee.LastName: row.ChangedColumns.Add(column, CompareString(employee.LastName, value, rowChange)); break; case DataTypeEmployee.FirstName: row.ChangedColumns.Add(column, CompareString(employee.FirstName, value, rowChange)); break; case DataTypeEmployee.Patronymic: row.ChangedColumns.Add(column, CompareString(employee.Patronymic, value, rowChange)); break; case DataTypeEmployee.Sex: //Первая М английская, вторая русская. if (value.StartsWith("M", StringComparison.CurrentCultureIgnoreCase) || value.StartsWith("М", StringComparison.CurrentCultureIgnoreCase)) { row.AddColumnChange(column, employee.Sex == Sex.M ? ChangeType.NotChanged : rowChange); break; } if (value.StartsWith("F", StringComparison.CurrentCultureIgnoreCase) || value.StartsWith("Ж", StringComparison.CurrentCultureIgnoreCase)) { row.AddColumnChange(column, employee.Sex == Sex.F ? ChangeType.NotChanged : rowChange); break; } row.AddColumnChange(column, ChangeType.ParseError); break; case DataTypeEmployee.Fio: value.SplitFullName(out var lastName, out var firstName, out var patronymic); var lastDiff = !String.IsNullOrEmpty(lastName) && !String.Equals(employee.LastName, lastName, StringComparison.CurrentCultureIgnoreCase); var firstDiff = !String.IsNullOrEmpty(firstName) && !String.Equals(employee.FirstName, firstName, StringComparison.CurrentCultureIgnoreCase); var patronymicDiff = !String.IsNullOrEmpty(patronymic) && !String.Equals(employee.Patronymic, patronymic, StringComparison.CurrentCultureIgnoreCase); string oldValue = (lastDiff || firstDiff || patronymicDiff) ? employee.FullName : null; row.AddColumnChange(column, (lastDiff || firstDiff || patronymicDiff) ? rowChange : ChangeType.NotChanged, oldValue); break; case DataTypeEmployee.HireDate: row.ChangedColumns.Add(column, CompareDate(employee.HireDate, row.CellDateTimeValue(column.Index), rowChange)); break; case DataTypeEmployee.DismissDate: row.ChangedColumns.Add(column, CompareDate(employee.DismissDate, row.CellDateTimeValue(column.Index), rowChange)); break; case DataTypeEmployee.BirthDate: row.ChangedColumns.Add(column, CompareDate(employee.BirthDate, row.CellDateTimeValue(column.Index), rowChange)); break; case DataTypeEmployee.Subdivision: if (String.Equals(employee.Subdivision?.Name, value, StringComparison.CurrentCultureIgnoreCase)) { row.AddColumnChange(column, ChangeType.NotChanged); break; } var subdivision = UsedSubdivisions.FirstOrDefault(x => String.Equals(x.Name, value, StringComparison.CurrentCultureIgnoreCase)); if (subdivision == null) { subdivision = new Subdivision { Name = value }; UsedSubdivisions.Add(subdivision); } row.AddColumnChange(column, subdivision.Id == 0 ? ChangeType.NewEntity : rowChange, employee.Subdivision?.Name); employee.Subdivision = subdivision; break; case DataTypeEmployee.Department: if (String.Equals(employee.Department?.Name, value, StringComparison.CurrentCultureIgnoreCase)) { row.AddColumnChange(column, ChangeType.NotChanged); break; } var department = UsedDepartment.FirstOrDefault(x => String.Equals(x.Name, value, StringComparison.CurrentCultureIgnoreCase) && (employee.Subdivision == null && x.Subdivision == null || DomainHelper.EqualDomainObjects(x.Subdivision, employee.Subdivision))); if (department == null) { department = new Department { Name = value, Subdivision = employee.Subdivision, Comments = "Создан при импорте сотрудников из Excel" }; UsedDepartment.Add(department); } row.AddColumnChange(column, department.Id == 0 ? ChangeType.NewEntity : rowChange, employee.Department?.Name); employee.Department = department; break; case DataTypeEmployee.Post: if (String.Equals(employee.Post?.Name, value, StringComparison.CurrentCultureIgnoreCase)) { row.AddColumnChange(column, ChangeType.NotChanged); break; } var post = UsedPosts.FirstOrDefault(x => String.Equals(x.Name, value, StringComparison.CurrentCultureIgnoreCase) && (employee.Subdivision == null && x.Subdivision == null || DomainHelper.EqualDomainObjects(x.Subdivision, employee.Subdivision))); if (post == null) { post = new Post { Name = value, Subdivision = employee.Subdivision, Comments = "Создана при импорте сотрудников из Excel" }; UsedPosts.Add(post); } row.AddColumnChange(column, post.Id == 0 ? ChangeType.NewEntity : rowChange, employee.Post?.Name); employee.Post = post; break; case DataTypeEmployee.Growth: { var height = SizeParser.ParseSize(uow, row.CellStringValue(column.Index), sizeService, CategorySizeType.Height); var employeeHeight = employee.Sizes.FirstOrDefault(x => x.SizeType == height.SizeType)?.Size; row.ChangedColumns.Add(column, CompareSize(employeeHeight, height, rowChange, uow)); } break; case DataTypeEmployee.WearSize: { var size = SizeParser.ParseSize(uow, row.CellStringValue(column.Index), sizeService, CategorySizeType.Size); var employeeSize = employee.Sizes.FirstOrDefault(x => x.SizeType == size.SizeType)?.Size; row.ChangedColumns.Add(column, CompareSize(employeeSize, size, rowChange, uow)); } break; case DataTypeEmployee.ShoesSize: { var size = SizeParser.ParseSize(uow, row.CellStringValue(column.Index), sizeService, CategorySizeType.Size); var employeeSize = employee.Sizes.FirstOrDefault(x => x.SizeType == size.SizeType)?.Size; row.ChangedColumns.Add(column, CompareSize(employeeSize, size, rowChange, uow)); } break; default: throw new NotSupportedException($"Тип данных {dataType} не поддерживается."); } }