private void OnUpdateData(object sender, EventArgs e) { Object ChildrenValue, ChildrenLabel; ShowData HeaderDataSave; string XmlData; string CodigoCampo; DataDefinition IsRequiredField; bool ControlIsRequired; IList <ShowData> DetailDataList; //Deserializo el Xml para obtener el Showdata DetailDataList = Util.DeserializeMetaDataWF(View.Model.DataInformationSearch.XmlData); //Inicializo la lista de los datos a convertir en Xml View.Model.ListDataSave = new List <ShowData>(); //Obtengo los datos de los campos foreach (UIElement UIElement in View.GetStackPanelDinamicos.Children) { try { //Obtengo el label y el valor digitado ChildrenLabel = UIElement.GetType().GetProperty("UcLabel").GetValue(UIElement, null); ChildrenValue = UIElement.GetType().GetProperty("UcValue").GetValue(UIElement, null); //Obtengo el codigo del campo CodigoCampo = UIElement.GetType().GetProperty("Name").GetValue(UIElement, null).ToString(); CodigoCampo = CodigoCampo.Replace("f_", ""); //Traigo sus datos de creacion IsRequiredField = service.GetDataDefinition(new DataDefinition { Code = CodigoCampo }).First(); //Evaluo si el campo es obligatorio /*if (IsRequiredField.IsRequired == true && String.IsNullOrEmpty(ChildrenValue == null ? "" : ChildrenValue.ToString())) * ControlIsRequired = false; * else*/ ControlIsRequired = true; //Evaluo si puedo continuar dependiendo de si el dato era requerido y fue digitado o no if (ControlIsRequired) { //Evaluo si existe el dato que estoy leyendo para quitarlo del listado anterior try { HeaderDataSave = DetailDataList.Where(f => f.DataKey == CodigoCampo.ToString()).First(); DetailDataList.Remove(HeaderDataSave); } //En caso de no existir no quito nada catch { } //Creo el ShowData con los datos de ChildrenLabel y ChildrenValue HeaderDataSave = new ShowData { DataKey = CodigoCampo.ToString(), DataValue = ChildrenValue == null ? "" : ChildrenValue.ToString() }; //Adiciono el ShowData al listado para crear el Xml View.Model.ListDataSave.Add(HeaderDataSave); } else { Util.ShowError("El campo " + ChildrenLabel.ToString() + " no puede ser vacio."); return; } } catch { continue; } } try { //Concateno las listas de ShowData, la que estaba guardada y la nueva View.Model.ListDataSave = View.Model.ListDataSave.Concat(DetailDataList).ToList(); //Convierto el listado de datos a un Xml XmlData = Util.XmlSerializerWF(View.Model.ListDataSave); //Evaluo el tipo de dato a editar(Document o Label) if (View.Model.DataInformationSearch.Entity.ClassEntityID == EntityID.Document) { //Guardo los datos para el documento UpdateDocumentData(XmlData); } if (View.Model.DataInformationSearch.Entity.ClassEntityID == EntityID.Label) { //Guardo los datos para el label UpdateLabelData(XmlData); } //Muestro el mensaje de confirmacion Util.ShowMessage("Los datos fueron editados correctamente"); } catch (Exception Ex) { Util.ShowError("Hubo un error durante el proceso: " + Ex.Message); } }
private void OnSaveDetails(object sender, EventArgs e) { //Validacion si no existen datos para guardar if (View.Model.ListRecords.Rows.Count == 0) { return; } //Variables Auxiliares DataInformation DataInformationSerial; Object ChildrenValue, ChildrenLabel; ShowData DetailDataSave; IList <ShowData> DetailDataList; string XmlData; WpfFront.WMSBusinessService.Label LabelAux; DataDefinitionByBin DataDefinitionControlIsRequired; bool ControlIsRequired; try { //Recorro los registros de la lista para obtener los datos y hacer un join con los anteriores y guardarlos foreach (DataRow DataRow in View.Model.ListRecords.Rows) { //Obtengo el DataInformation asociado al registro DataInformationSerial = View.Model.ListDataInformation.Where (f => f.Entity.ClassEntityID == EntityID.Label && f.EntityRowID == Int32.Parse(DataRow[0].ToString())).ToList().First(); //Deserializo el Xml para obtener el Showdata DetailDataList = Util.DeserializeMetaDataWF(DataInformationSerial.XmlData); //Inicializo la lista de los datos a convertir en Xml View.Model.ListDetailsDataSave = new List <ShowData>(); //Obtengo los datos de cada campo con su nombre foreach (DataColumn c in View.Model.ListRecords.Columns) { //Obtengo el label y el valor digitado ChildrenLabel = c.ColumnName; ChildrenValue = DataRow[c.ColumnName].ToString(); //Evaluo si el campo es obligatorio ControlIsRequired = true; DataDefinitionControlIsRequired = (View.Model.CamposDetails.Where(f => f.DataDefinition.Code == ChildrenLabel).Count() > 0) ? View.Model.CamposDetails.Where(f => f.DataDefinition.Code == ChildrenLabel).First() : null; if (DataDefinitionControlIsRequired != null) { if (DataDefinitionControlIsRequired.DataDefinition.IsRequired == true && String.IsNullOrEmpty(ChildrenValue.ToString())) { ControlIsRequired = false; } else { ControlIsRequired = true; } } //Evaluo si puedo continuar dependiendo de si el dato era requerido y fue digitado o no if (ControlIsRequired) { //Evaluo si existe el dato que estoy leyendo para quitarlo del listado anterior try { DetailDataSave = DetailDataList.Where(f => f.DataKey == c.ColumnName).First(); DetailDataList.Remove(DetailDataSave); } //En caso de no existir no quito nada catch { } //Creo el ShowData con el dato DetailDataSave = new ShowData { DataKey = ChildrenLabel.ToString(), DataValue = ChildrenValue.ToString() }; //Adiciono cada dato a la lista View.Model.ListDetailsDataSave.Add(DetailDataSave); } else { Util.ShowError("El campo " + ChildrenLabel.ToString() + " no puede ser vacio."); return; } } //Concateno las listas de ShowData, la que estaba guardada y la nueva View.Model.ListDetailsDataSave = View.Model.ListDetailsDataSave.Concat(DetailDataList).ToList(); //Convierto el listado de datos a un Xml XmlData = Util.XmlSerializerWF(View.Model.ListDetailsDataSave); //Modifico el DataInformation con el nuevo Xml DataInformationSerial.XmlData = XmlData; DataInformationSerial.ModDate = DateTime.Now; DataInformationSerial.ModifiedBy = App.curUser.UserName; //Actualizo el DataInformation service.UpdateDataInformation(DataInformationSerial); } LabelAux = service.GetLabel(new WpfFront.WMSBusinessService.Label { Bin = new Bin { BinCode = "MAIN", Location = LocationDespachos }, LabelType = new DocumentType { DocTypeID = LabelType.BinLocation } }).First(); //Recorro el listado de Labels para actualizar sus datos foreach (WpfFront.WMSBusinessService.Label Label in View.Model.ListLabelScann) { Label.Notes += (View.Model.IsCheckedCommentsSerial) ? (" " + View.Model.HeaderDocument.Comment) : ""; try { service.ChangeLabelLocationV2(Label, LabelAux, View.Model.HeaderDocument); } catch { } } //Reinicio las variables View.Model.ListRecords.Rows.Clear(); View.Model.ListLabelScann = new List <WpfFront.WMSBusinessService.Label>(); View.Model.ListDataInformation = new List <DataInformation>(); //Muestro el mensaje de guardado Util.ShowMessage("Datos Guardados exitosamente."); } catch (Exception Ex) { Util.ShowError("Hubo un error guardando los datos, por favor vuelva a intentarlo: " + Ex.Message); } }