public ServicesView() { InitializeComponent(); newService = new Service(); myServicesViewSource = (CollectionViewSource)this.Resources["serviceViewSource"]; DataContext = this; }
public ActionResult Create(Model.Service collection, string IsContinue = "0") { ReturnMessage rm = new ReturnMessage(false); if (ModelState.IsValid) { try { if (!CheckRepeat(collection)) { rm.IsSuccess = false; rm.Message = "已有相同记录存在!"; } else { bool res = _bll.Add(collection); rm.IsSuccess = res; if (rm.IsSuccess) { OperateLogHelper.Create(collection); rm.IsContinue = IsContinue == "1"; } } } catch (Exception ex) { rm.Message = ex.Message; } } return(Json(rm)); }
public IQueryable <Model.Service> InsertService(Model.Service service) { int newId; //using (ScutexEntities db1 = new ScutexEntities()) //{ Service serv = new Service(); Mapper.CreateMap <Model.Service, Service>(); serv = Mapper.Map <Model.Service, Service>(service); serv.InboundPrivateKey = service.InboundKeyPair.PrivateKey; serv.InboundPublicKey = service.InboundKeyPair.PublicKey; serv.OutboundPrivateKey = service.OutboundKeyPair.PrivateKey; serv.OutboundPublicKey = service.OutboundKeyPair.PublicKey; serv.ManagementInboundPrivateKey = service.ManagementInboundKeyPair.PrivateKey; serv.ManagementInboundPublicKey = service.ManagementInboundKeyPair.PublicKey; serv.ManagementOutboundPrivateKey = service.ManagementOutboundKeyPair.PrivateKey; serv.ManagementOutboundPublicKey = service.ManagementOutboundKeyPair.PublicKey; db.AddToServices(serv); db.SaveChanges(); newId = serv.ServiceId; //} return(GetServiceById(newId)); }
private void UpdateCommandHandler(object sender, ExecutedRoutedEventArgs e) { if (newServiceGrid.IsVisible) { newService = new Model.Service(); Model.Service nService = myServicesViewSource.View.CurrentItem as Model.Service; if (nService != null) { newService.ServiceName = nService?.ServiceName; if (!string.IsNullOrWhiteSpace(newService?.ServiceName)) { myServicesViewSource.View.Refresh(); myServicesViewSource.View.MoveCurrentTo(newService); context.SaveChanges(); Messenger.Default.Send <string>(Utils.ServiceAddedMessage); } else { MessageBox.Show("Service Is Empty."); } } newServiceGrid.Visibility = Visibility.Collapsed; existingServiceGrid.Visibility = Visibility.Visible; } }
public IQueryable <Model.Service> UpdateService(Model.Service service) { int newId; //using (ScutexEntities db1 = new ScutexEntities()) //{ var svc = (from s in db.Services where s.ServiceId == service.ServiceId select s).First(); svc.Name = service.Name; svc.ClientUrl = service.ClientUrl; svc.ManagementUrl = service.ManagementUrl; svc.Token = service.Token; svc.Initialized = service.Initialized; svc.Tested = service.Tested; svc.LockToIp = service.LockToIp; svc.InboundPrivateKey = service.InboundKeyPair.PrivateKey; svc.InboundPublicKey = service.InboundKeyPair.PublicKey; svc.OutboundPrivateKey = service.OutboundKeyPair.PrivateKey; svc.OutboundPublicKey = service.OutboundKeyPair.PublicKey; svc.ManagementInboundPrivateKey = service.ManagementInboundKeyPair.PrivateKey; svc.ManagementInboundPublicKey = service.ManagementInboundKeyPair.PublicKey; svc.ManagementOutboundPrivateKey = service.ManagementOutboundKeyPair.PrivateKey; svc.ManagementOutboundPublicKey = service.ManagementOutboundKeyPair.PublicKey; svc.UniquePad = service.UniquePad; db.SaveChanges(); newId = svc.ServiceId; //} return(GetServiceById(newId)); }
public ActionResult Edit(Model.Service collection) { ReturnMessage rm = new ReturnMessage(false); if (ModelState.IsValid) { try { if (!CheckRepeat(collection)) { rm.IsSuccess = false; rm.Message = "已有相同记录存在!"; } else { rm.IsSuccess = _bll.Update(collection); } } catch (Exception ex) { rm.Message = ex.Message; } } return(Json(rm)); }
private void OnAppointmentsChanged(object sender, PersistentObjectsEventArgs e) { using (new WaitCursor()) { bool bRefreshScheduler = false; Model.Service service = new Model.Service(Program.Service); foreach (Appointment apt in e.Objects) { Model.Appointment obj = apt.GetSourceObject((SchedulerStorage)sender) as Model.Appointment; if (obj != null) { Model.Appointment utc = obj.Clone(DateTimeKind.Utc); service.AttachTo("Appointments", utc); service.UpdateObject(utc); if (!bRefreshScheduler) { if (Filter.Current.User != null && (!obj.AssignedTo.HasValue || obj.AssignedTo.Value != Filter.Current.User.ID)) { bRefreshScheduler = true; } } } } try { service.SaveChanges(System.Data.Services.Client.SaveChangesOptions.Batch); } catch (DataServiceRequestException error) { if (error.InnerException is DataServiceClientException && ((DataServiceClientException)error.InnerException).StatusCode == 404) { return; } if (error.Response.BatchStatusCode == 404) { return; } #if DEBUG Debugger.Break(); #endif throw; } gridControl.RefreshDataSource(); if (bRefreshScheduler) { isDirty = true; schedulerControl.RefreshData(); } } }
public ServiceDetailItem(string saleID, Model.Service service) { if (service != null) { SaleID = saleID; Service = service; Number = 1; UnitPrice = service.UnitPrice; } }
private bool CheckRepeat(Model.Service model) { var query = Query.And(Query.EQ("Type", model.Type), Query.EQ("Address", model.Address)); var modelDb = _bll.Get(query); if (modelDb == null) { return(true); } return(model.Rid == modelDb.Rid); }
public void Create(Model.Service service, string user = "") { _serviceRepository.Insert(service); _applicationTraceService.create(new ApplicationTrace { utilisateur = user, action = Parametres.Action.Creation.ToString(), description = "Création d'un service", }); }
private Model.Service CreateServiceDb(Service service) { Model.Service newServiceDb = new Model.Service() { ServiceId = service.Id, Name = service.Name }; Uow.Services.Add(newServiceDb); Uow.Commit(); return(newServiceDb); }
public void Update(Model.Service service, string user = "") { _serviceRepository.Update(service); _applicationTraceService.create(new ApplicationTrace { utilisateur = user, action = Parametres.Action.Modification.ToString(), description = String.Format("Mise à jour d'un service service_id = {0}", service.id), }); }
public ActionResult GetServiceList(int page = 1, int rows = 20, Model.Service search = null, string sidx = null, string sord = "asc") { if (string.IsNullOrEmpty(sidx)) { sidx = "Type"; } var pager = new PageInfo { PageSize = rows, CurrentPageIndex = page > 0 ? page : 1 }; List <IMongoQuery> queryList = null; if (search != null) { queryList = new List <IMongoQuery>(); if (search.Type.HasValue) { queryList.Add(Query <Model.Service> .EQ(t => t.Type, search.Type)); } if (!string.IsNullOrWhiteSpace(search.Address)) { queryList.Add(Query <Model.Service> .EQ(t => t.Address, new BsonRegularExpression(new Regex(search.Address, RegexOptions.IgnoreCase)))); } if (!string.IsNullOrWhiteSpace(search.Description)) { queryList.Add(Query <Model.Service> .EQ(t => t.Description, search.Description)); } if (!string.IsNullOrWhiteSpace(search.Version)) { queryList.Add(Query <Model.Service> .EQ(t => t.Version, new BsonRegularExpression(new Regex(search.Version, RegexOptions.IgnoreCase)))); } if (search.Dependency.HasValue) { queryList.Add(Query <Model.Service> .EQ(t => t.Dependency, search.Dependency.Value)); } } var where = queryList != null && queryList.Any() ? Query.And(queryList) : null; long totalCount; var rm = new jqGridData { page = pager.CurrentPageIndex, rows = _bll.GetList(out totalCount, page, rows, where, sidx, sord), total = (int) (totalCount % pager.PageSize == 0 ? totalCount / pager.PageSize : totalCount / pager.PageSize + 1), records = (int)totalCount }; return(Json(rm, JsonRequestBehavior.AllowGet)); }
private Model.ServiceStatus CreateServiceStatus(Model.Service serviceDb, Model.Region regionDb, Model.Status status) { Model.ServiceStatus serviceStatusDb = new Model.ServiceStatus() { Service = serviceDb, Region = regionDb, Status = status, DateUpdate = DateTime.UtcNow }; Uow.ServicesStatus.Add(serviceStatusDb); Uow.Commit(); return(serviceStatusDb); }
void Delete(Model.Appointment obj) { if (obj == null) { return; } BindingList <Model.Appointment> appointmentDataSource = schedulerStorage.Appointments.DataSource as BindingList <Model.Appointment>; if (appointmentDataSource != null) { appointmentDataSource.Remove(obj); } BindingList <Model.Appointment> taskDataSource = gridControl.DataSource as BindingList <Model.Appointment>; if (taskDataSource != null) { taskDataSource.Remove(obj); } Model.Service service = new Model.Service(Program.Service); try { Model.Appointment utc = obj.Clone(DateTimeKind.Utc); service.AttachTo("Appointments", utc); service.DeleteObject(utc); service.SaveChanges(); } catch (DataServiceRequestException e) { if (e.InnerException is DataServiceClientException && ((DataServiceClientException)e.InnerException).StatusCode == 404) { return; } if (e.Response.BatchStatusCode == 404) { return; } #if DEBUG Debugger.Break(); #endif throw; } }
public static Service FromDataRow(DataRow dr) { if (dr == null) { return(null); } var result = new Model.Service() { ServiceID = int.Parse(dr[0].ToString()), Category = dr[1].ToString(), ServiceName = dr[2].ToString(), UnitPrice = double.Parse(dr[3].ToString()), }; return(result); }
/// <summary> /// Установить даты начала и окончания услуги и количество услуг /// </summary> /// <param name="service">Услуга, которую требуется обновить</param> void SetDates(Model.Service service, RecourseAux ra) { if (BedDays <= 1) { Quantity = 1; service.DateFrom = service.DateTill = Date; } else { service.DateTill = Date; #if GKP3 // Since we are apriori polyclinic service.DateFrom = Date.WorkingDaysBefore(BedDays, true); #else bool dayHospital = ra.InternalReason == InternalReason.DayHosp || ra.InternalReason == InternalReason.SurgeryDayHosp; service.DateFrom = Date.WorkingDaysBefore(Quantity, dayHospital); #endif } }
private void OnRowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e) { using (new WaitCursor()) { Model.Service service = new Model.Service(Program.Service); Model.Appointment obj = e.Row as Model.Appointment; if (obj != null) { if (obj.Resource != null) { obj.AssignedTo = obj.Resource.ID; obj.Resource = null; } if (obj.ID != Guid.Empty) { Model.Appointment utc = obj.Clone(DateTimeKind.Utc); service.AttachTo("Appointments", utc); service.UpdateObject(utc); } else { obj.ID = Guid.NewGuid(); if (!obj.AssignedTo.HasValue && Filter.Current.User != null) { obj.AssignedTo = Filter.Current.User.ID; } Model.Appointment utc = obj.Clone(DateTimeKind.Utc); service.AddToAppointments(utc); } } schedulerStorage.RefreshData(); service.SaveChanges(System.Data.Services.Client.SaveChangesOptions.Batch); } }
public void ProcessAzureStatus() { try { AzureStatus azureStatus = AzureStatusEngine.GetAzureStatus(); foreach (Service service in azureStatus.Services) { Model.Service serviceDb = GetServiceDbByServiceId(service.Id); if (serviceDb == null) { serviceDb = CreateServiceDb(service); } foreach (Region region in service.Regions) { Model.Region regionDb = GetRegionDbByRegionId(region.Id); if (regionDb == null) { regionDb = CreateRegionDb(region); } Model.ServiceStatus serviceStatusDb = GetServiceStatusByServiceIdandRegionId(service, region); if (serviceStatusDb == null) { serviceStatusDb = CreateServiceStatus(serviceDb, regionDb, (Model.Status)Enum.Parse(typeof(Model.Status), region.Status)); } else { UpdateServiceStatus(serviceStatusDb, (Model.Status)Enum.Parse(typeof(Model.Status), region.Status)); } } } } catch (Exception ex) { Console.Write(ex.Message); } }
/// <summary> /// Преобразовать данный объект в модель услуги /// </summary> /// <param name="ra">Вспомогательный объект законченного случая</param> public Model.Service ToService(RecourseAux ra) { Model.Service result = new Model.Service(); result.Identity = ServiceId; result.Unit = ra.Unit; result.InterventionKind = InterventionKind; result.Child = ra.Child; SetDates(result, ra); result.Diagnosis = ra.MainDiagnosis; result.ServiceCode = ServiceCode; result.Quantity = Quantity; result.Tariff = Tariff; result.Total = Total; result.SpecialityCode = SpecialityCode; result.DoctorCode = DoctorCode; result.Incomplete = Incomplete; result.Refusal = Refusal; return(result); }
/// <summary> /// Загрузить события для законченного случая /// </summary> /// <remarks> /// В настоящий момент одному законченному случаю соответствует одно события (т.к. нет /// внутрибольничных переводов). Здесь также загружаются услуги для события и обновляются /// поля законченного случая данными, которые удалось получить на этом этапе. /// </remarks> List <Model.Event> LoadEvents(Model.Recourse rec, RecourseAux ra, Model.OrderSection section) { // Extract single event from the RecourseAux: List <Model.Event> result = new List <Model.Event>(); Model.Event evt = ra.ToEvent(rec, section); result.Add(evt); // Load auxilliary service records and service models List <ServiceAux> ss = LoadServices(ra, evt).Distinct(new ServiceComparer()).OrderBy(s => s.Date).ToList(); if (ra.InternalReason == InternalReason.SurgeryDayHosp && ss.Count(s => s.ServiceCode == ra.ServiceCode) > 1) { // Fix for: // Два случая ЦАХ у одного пациента с одним и тем же диагнозом // будут выгружены как два случая, но в каждом ВСЕ услуги из обеих госпитализаций // Get main service ServiceAux sa = ss.FirstOrDefault(s => s.Date == ra.Date && s.ServiceCode == ra.ServiceCode); if (sa != null) { // Get hospitalization dates DateTime till = sa.Date; DateTime from = till.WorkingDaysBefore(sa.BedDays, true); // Select only services with relevant dates IEnumerable <ServiceAux> sas = ss.Where(s => s.Date <= till && s.Date >= from); ra.UpdateMedicalAid(rec, sas.Last()); evt.Services = sas.Select(s => s.ToService(ra)).ToList(); // ...supposedly at least one services is selected: the main one } else { ra.UpdateMedicalAid(rec, ss.Last()); evt.Services = ss.Select(s => s.ToService(ra)).ToList(); } } else { ra.UpdateMedicalAid(rec, ss.Last()); evt.Services = ss.Select(s => s.ToService(ra)).ToList(); } // 20190902 - Блядский вид медицинского вмешательства if (ra.InternalReason == InternalReason.SurgeryDayHosp) { Model.Service service = evt.Services.FirstOrDefault(s => s.ServiceCode / 100000 == 3); if (service != null) { string interventionKind = GetInterventionKind(service.ServiceCode); if (!string.IsNullOrEmpty(interventionKind)) { evt.Services.ForEach(s => s.InterventionKind = interventionKind); } } } // Код врача и специальности должны соответствовать закрывающей записи, // приводим в соответствие из ra (где было изменено в UpdateMedicalAid()) evt.SpecialityCode = ra.SpecialityCode; evt.DoctorCode = ra.DoctorCode; if (rec.IsHospitalization) { // Update profile-shifting transfer and total of the bed days ServiceAux serv = ss.Where(s => s.Transfer == Model.Transfer.Transferred).FirstOrDefault(); // Turn transfer to ProfileShift if there has been bed profile change: if (serv != null && ss.GroupBy(s => s.BedProfile).Count() > 1) { serv.Transfer = Model.Transfer.ProfileShift; } evt.BedDays = ss.Select(s => s.BedDays).Sum(); } // Event dates if (ra.InternalReason == InternalReason.Stage1 || ra.InternalReason == InternalReason.Prof) { evt.DateTill = evt.Services.Max(s => s.DateTill); // For DD1 - start of the recourse is an antropometry ServiceAux sa = ss.Where(s => s.IsAntropometry()).FirstOrDefault(); if (sa != null) { evt.DateFrom = sa.Date; } else { evt.DateFrom = ss.Min(s => s.Date); } #if FOMS1 } else if (ra.InternalReason == InternalReason.Prof) { // Work around error "Код способа оплаты не соответствует периоду лечения; // Цель обращения не соответствует способу оплаты медицинской помощи" // Prof events within a single day are discarded with this error evt.DateFrom = ra.Date.ShiftDays(-1); if (evt.DateFrom == ra.Date) { evt.DateTill = ra.Date.ShiftDays(1); Model.Service s = evt.Services.First(); if (s != null) { s.DateFrom = evt.DateTill; s.DateTill = evt.DateTill; } } else { evt.DateTill = ra.Date; } #endif } else { // For other cases service with minimal date (mayhap hospitalization - reason why not ss.Min()) // 2 этап - пустая выборка try { evt.DateFrom = evt.Services.Min(s => s.DateFrom); } catch (Exception e) { Logger.Log(e.Message + string.Format(" - повод {0}, услуга {1}, S.RECID {2}", ra.InternalReason, ra.ServiceCode, ra.ServiceId)); } evt.DateTill = evt.Services.Max(s => s.DateTill); } #if FOMS // Задолбал ФОМС с их дурацкими ошибками: дд раз в 2 года ставит "неправильные даты", если дата начала и окончания не совпадают // В подушевой услуге ставим даты начала и окончания как во всем закрытом случае // 20190417 Хрен там, теперь не только обрезанная ДД Model.Service ser = evt.Services.FirstOrDefault(s => s.ServiceCode / 10000 == 5); if (ser != null) { ser.DateFrom = evt.DateFrom; ser.DateTill = evt.DateTill; } #endif // May change evt and ra's MainDiagnosis: ra.FindConcurrentDiagnoses(evt, ss, section); // Service diagnosis as recorse's in case of diagnostics if (ra.InternalReason == InternalReason.Diagnostics) { evt.Services.ForEach(s => s.Diagnosis = ra.MainDiagnosis); } evt.ComplicationDiagnoses = ServiceAux.GetComplicationDiagnoses(ss); // Statistic code if (!string.IsNullOrEmpty(ra.MainDiagnosis) && ra.MainDiagnosis.First() != 'Z') { StatisticCode[] sc = ss .Select(s => s.StatisticCode) .Where(s => s > StatisticCode.None && s < StatisticCode.Dispensary) .ToArray(); if (sc != null && sc.Count() > 0) { evt.StatisticsCode = (((int)sc.Max()) - 1).ToString(); } else { evt.StatisticsCode = Dict.StatisticsCode.Instance.Get(ra.MainDiagnosis); } } // Профиль МП случая - по профилю закрывающей записи rec.Profile = ss.OrderBy(s => s.Date).Last().AidProfile; // Other Event fields which can be taken from the services evt.Tariff = evt.Services.Sum(s => s.Tariff); evt.Total = evt.Services.Sum(s => s.Total); evt.PrimaryDiagnosis = ss.Max(s => s.PrimaryDiagnosis); evt.FirstIdentified = ss.Any(s => s.FirstIdentified); if (ra.InternalReason == InternalReason.DispRegister) { evt.DispensarySupervision = ss.Max(s => s.DispensarySupervision); if (evt.DispensarySupervision == Model.DispensarySupervision.None) { evt.DispensarySupervision = Model.DispensarySupervision.Observed; } } else if (section == Model.OrderSection.D3) { // 20190430 - D3 section: disp supervision is explicit evt.DispensarySupervision = ss.Max(s => s.DispensarySupervision); // Диагнозы на R ФОМС считает подлежащими Д-учету if (evt.DispensarySupervision < Model.DispensarySupervision.Observed || evt.DispensarySupervision > Model.DispensarySupervision.NotSubject) { if ("ZY".Contains(evt.MainDiagnosis.First())) { evt.DispensarySupervision = Model.DispensarySupervision.NotSubject; } else { if (evt.FirstIdentified) { evt.DispensarySupervision = Model.DispensarySupervision.Taken; } else { evt.DispensarySupervision = Model.DispensarySupervision.Observed; } } } } evt.ConcurrentMesCode = ss.Max(s => s.ConcurrentMesCode); var d2 = ss.Where(s => s.Transfer != Model.Transfer.None); if (d2 != null && d2.Count() > 0) { evt.Transfer = d2.Min(s => s.Transfer); } // Other Recourse fields -"- rec.UnitShift = ss.Any(s => s.Transfer == Model.Transfer.ProfileShift); rec.BirthWeight = ss.Max(s => s.BirthWeight); rec.DateFrom = evt.DateFrom; rec.DateTill = evt.DateTill; rec.Total = evt.Total; rec.BedDays = evt.BedDays; if (RecourseAux.NeedsDirection(rec)) { // Extract directed-from in case when it is needed rec.DirectedFrom = ss.Max(s => s.DirectedFrom); if (string.IsNullOrEmpty(rec.DirectedFrom)) { // TODO: LPU code from local to federal rec.DirectedFrom = Options.LpuCode; } rec.DirectionDate = rec.DateFrom; } return(result); }
public MainWindow(Model.Service service) { InitializeComponent(); this.riskSetting = RiskSetting.Default; this.service = service; this.viewCheckUpdated = new Subject <object>(); this.instrumentSelected = new Subject <string>(); this.selectedInstrument = this.instrumentSelected.ToReadOnlyReactiveProperty(); this.listView_Instruments.DataContext = this.service.Instruments.Keys.OrderBy(x => x); var sampling = Observable.Interval(TimeSpan.FromMilliseconds(1000)).Select <long, object>(_ => null); this.orderTabSelected = new Subject <int>(); var orderTabSelected = this.orderTabSelected.Select <int, object>(_ => null); this.selectedOrderTab = this.orderTabSelected.ToReadOnlyReactiveProperty(); this.lines = new Dictionary <string, Lines>(); foreach (var instrument in this.service.Instruments.Values) { var lines = new Lines(); sampling.Subscribe(_ => { var current = instrument.CurrentLine.Value; try { Dispatcher.Invoke(() => { var focused = this.dataGrid_Lines.IsKeyboardFocusWithin; var selected = this.dataGrid_Lines.SelectedItem as Line; lines.Current = (current == null) ? null : new Line(current); if (instrument.Name == this.selectedInstrument.Value) { this.dataGrid_Lines.SelectedItem = lines[selected?.Identity]; } if (focused) { this.dataGrid_Lines.Focus(); } }); } catch (TaskCanceledException) { // do nothing } }); instrument.ChartLines.Subscribe(charts => { Dispatcher.Invoke(() => { var focused = this.dataGrid_Lines.IsKeyboardFocusWithin; var selected = this.dataGrid_Lines.SelectedItem as Line; lines.UpdateLines(charts); if (instrument.Name == this.selectedInstrument.Value) { this.dataGrid_Lines.SelectedItem = lines[selected?.Identity]; } if (focused) { this.dataGrid_Lines.Focus(); } }); }); this.lines.Add(instrument.Name, lines); } this.dataGrid_Lines.DataContext = this.instrumentSelected .Select(_ => this.ListItems) .Do(_ => { var current = this.lines[this.selectedInstrument.Value].Current; if (current == null) { return; } this.dataGrid_Lines.SelectedItem = current; this.dataGrid_Lines.Focus(); }) .Merge(this.viewCheckUpdated.Select(_ => this.ListItems)) .ToReadOnlyReactiveProperty() ; this.buyPreview = new OrderPreviewRecords(); this.sellPreview = new OrderPreviewRecords(); this.dataGrid_BuyPreview.DataContext = this.buyPreview; this.dataGrid_SellPreview.DataContext = this.sellPreview; Observable .Merge( this.lines .Select(x => x.Value.Items.CollectionChangedAsObservable().Select(_ => x.Key)) .Merge() .Where(x => x == this.selectedInstrument.Value), this.instrumentSelected, orderTabSelected, this.service.Account ) .Where(_ => this.selectedOrderTab.Value == 0) .Subscribe(_ => UpdateOrderPreview()) ; this.positions = new Positions(); this.dataGrid_Positions.DataContext = this.positions.Items; Observable .Merge( sampling, this.instrumentSelected, orderTabSelected, this.service.Positions ) .Where(_ => this.selectedOrderTab.Value == 1) .Subscribe(_ => UpdatePositions()) ; UpdateCloseButtonVisiblity(); }
void OnAppointmentsInserted(object sender, PersistentObjectsEventArgs e) { using (new WaitCursor()) { Model.Service service = new Model.Service(Program.Service); foreach (Appointment apt in e.Objects) { Model.Appointment.ItemCode defaultValue = apt.AllDay ? Model.Appointment.ItemCode.Task : Model.Appointment.ItemCode.Event; if (apt.CustomFields["ItemType"] == null) { apt.CustomFields["ItemType"] = defaultValue; } if (apt.CustomFields["CompletionStatus"] == null) { apt.CustomFields["CompletionStatus"] = (int)Model.Appointment.CompletionCode.NotStarted; } if (Filter.Current.User != null) { if (apt.ResourceId == null || !(apt.ResourceId is Guid) || ((Guid)apt.ResourceId == Guid.Empty)) { apt.ResourceId = Filter.Current.User.ID; } } Model.Appointment obj = apt.GetSourceObject((SchedulerStorage)sender) as Model.Appointment; if (obj != null) { bool bIsNew = false; if (obj.ID == Guid.Empty) { bIsNew = true; obj.ID = Guid.NewGuid(); } if (obj.AssignedTo == null && Filter.Current.User != null) { obj.AssignedTo = Filter.Current.User.ID; } obj.ItemType = (int)apt.CustomFields["ItemType"]; obj.CompletionStatus = (int)apt.CustomFields["CompletionStatus"]; Model.Appointment utc = obj.Clone(DateTimeKind.Utc); if (bIsNew) { service.AddToAppointments(utc); } else { service.AttachTo("Appointments", utc); service.UpdateObject(utc); } BindingList <Model.Appointment> taskDataSource = gridControl.DataSource as BindingList <Model.Appointment>; if (taskDataSource != null) { if (obj != null && !taskDataSource.Any <Model.Appointment>(it => it.ID == obj.ID) && obj.AppointmentType == (int)AppointmentType.Normal) { taskDataSource.Add(obj); } } } } service.SaveChanges(System.Data.Services.Client.SaveChangesOptions.Batch); } }