Ejemplo n.º 1
0
        protected override void OnSave()
        {
            var lastState = EditObject.CurrentState;
            var now       = DateTime.UtcNow;
            var usuario   = DAOFactory.UsuarioDAO.FindById(Usuario.Id);

            EditObject.Nombre       = txtNombre.Text.Trim();
            EditObject.Telefono     = txtTelefono.Text.Trim();
            EditObject.Mail         = txtMail.Text.Trim();
            EditObject.TipoProblema = (short)cbTipoProblema.SelectedIndex;
            EditObject.Descripcion  = txtDescripcion.Text.Trim();
            EditObject.Nivel        = (short)cbNivel.Selected;
            EditObject.NivelObj     = cbNivel.Selected > 0 ? DAOFactory.NivelDAO.FindById(cbNivel.Selected) : null;
            EditObject.CategoriaObj = cbCategoria.Selected > 0 ? DAOFactory.CategoriaDAO.FindById(cbCategoria.Selected) : null;
            EditObject.Subcategoria = cbSubcategoria.Selected > 0 ? DAOFactory.SubCategoriaDAO.FindById(cbSubcategoria.Selected) : null;

            EditObject.MailList = txtMailList.Text.Trim();
            if (dtInicio.SelectedDate.HasValue)
            {
                EditObject.FechaInicio = SecurityExtensions.ToDataBaseDateTime(dtInicio.SelectedDate.Value);
            }
            EditObject.Empresa     = cbEmpresa.Selected <= 0 ? null : DAOFactory.EmpresaDAO.FindById(cbEmpresa.Selected);
            EditObject.Vehiculo    = cbVehiculo.Selected > 0 ? DAOFactory.CocheDAO.FindById(cbVehiculo.Selected) : null;
            EditObject.Dispositivo = cbDispositivo.Selected > 0 ? DAOFactory.DispositivoDAO.FindById(cbDispositivo.Selected) : null;
            EditObject.NroParte    = EditMode ? txtNroParte.Text.Trim() : string.Empty;

            if (!EditMode)
            {
                EditObject.Fecha   = now;
                EditObject.Usuario = usuario;
            }

            var estado = (short)(!EditMode ? 0 : cbEstado.SelectedIndex);

            if (EditObject.CurrentState == 4 && cbResolucion.SelectedIndex != 0)
            {
                estado = (short)(cbResolucion.SelectedIndex == 1 ? 5 : 6);
            }

            var detail = new SupportTicketDetail
            {
                Estado        = estado,
                Fecha         = now,
                SupportTicket = EditObject,
                Usuario       = usuario,
                Descripcion   = Server.HtmlEncode(txtComentario.Text.Trim()).Replace("\r\n", "<br />")
            };

            EditObject.AddDetail(detail);

            if (lastState != estado)
            {
                var le = DAOFactory.SupportTicketDAO.GetEstados()[lastState];
                var ne = DAOFactory.SupportTicketDAO.GetEstados()[estado];

                if (!string.IsNullOrEmpty(detail.Descripcion))
                {
                    detail.Descripcion += "<br /><br />";
                }

                detail.Descripcion += string.Concat("[", CultureManager.GetLabel("SUPPORT_STATE_CHANGED"), ": ", le, " > ", ne, "]");
                upGridEstados.Update();
            }

            if (filUpload.HasFile)
            {
                CheckDirectory();

                var filename = GetFileName(filUpload.FileName);

                filUpload.SaveAs(Path.Combine(AttachDirectory, filename));

                if (string.IsNullOrEmpty(EditObject.FileName))
                {
                    EditObject.FileName = filename;
                }
                else
                {
                    EditObject.FileName += ";" + filename;
                }

                if (!string.IsNullOrEmpty(detail.Descripcion))
                {
                    detail.Descripcion += "<br /><br />";
                }

                detail.Descripcion += string.Concat("[", CultureManager.GetLabel("SUPPORT_FILE_UPLOADED"), ": ", filename, "]");
            }

            DAOFactory.SupportTicketDAO.SaveOrUpdate(EditObject);

            InformarPorMail(!EditMode);

            upComentarios.Update();
        }