Advertisement
Guest User

Untitled

a guest
Jul 6th, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.87 KB | None | 0 0
  1. using Microsoft.SharePoint;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Configuration;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Net;
  9. using System.Net.Mail;
  10. using System.Net.Security;
  11. using System.Security.Cryptography.X509Certificates;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Web.UI.WebControls;
  15. using Word = Microsoft.Office.Interop.Word;
  16.  
  17. namespace Continental.CajaDidactica.WP
  18. {
  19. public class spConnection
  20. {
  21. private SPSite _site;
  22. private SPUser _user;
  23. private SPWeb _web;
  24. private String url_site = SPContext.Current.Site.Url;
  25.  
  26. public SPSite Site
  27. {
  28. get { return _site; }
  29. }
  30.  
  31. public SPWeb Web
  32. {
  33. get { return _web; }
  34. }
  35.  
  36. public spConnection()
  37. {
  38. String strUrlSite = SPContext.Current.Web.Url;
  39. _site = new SPSite(strUrlSite);
  40. _web = _site.OpenWeb();
  41. _user = _web.CurrentUser;
  42. }
  43.  
  44. public spConnection(string subsitio)
  45. {
  46. String strUrlSite = SPContext.Current.Web.Url + "/" + subsitio;
  47. _site = new SPSite(strUrlSite);
  48. _web = _site.OpenWeb();
  49. _user = _web.CurrentUser;
  50. }
  51.  
  52. public spConnection(string sitio, bool valor)
  53. {
  54. String strUrlSite = sitio;
  55. _site = new SPSite(strUrlSite);
  56. _web = _site.OpenWeb();
  57. _user = _web.CurrentUser;
  58. }
  59.  
  60. public static string TranslationViewFields(string viewFields)
  61. {
  62. string re = string.Empty;
  63. foreach (string item in viewFields.Split(','))
  64. {
  65. re += "<FieldRef Name='" + item + "' />";
  66. }
  67. return re;
  68. }
  69.  
  70. public SPListItem Obtener_Item(String lista, Int32 id)
  71. {
  72. SPList oLista = _web.Lists[lista];
  73. return oLista.GetItemById(id);
  74. }
  75.  
  76. public SPListItemCollection Obtener_Items(String lista, String query, uint rowLimit, String viewFields)
  77. {
  78. SPListItemCollection items = null;
  79. SPList oLista;
  80. SPQuery oQuery;
  81. oLista = _web.Lists[lista];
  82. oQuery = new SPQuery();
  83. if (query != string.Empty) oQuery.Query = query;
  84. if (rowLimit > 0) oQuery.RowLimit = rowLimit;
  85. if (viewFields != string.Empty) { oQuery.ViewFields = TranslationViewFields(viewFields); oQuery.ViewFieldsOnly = true; }
  86. items = oLista.GetItems(oQuery);
  87. return items;
  88. }
  89.  
  90. public SPListItemCollection Obtener_Items_Paginado(String lista, String query, uint rowLimit, int IrPaginaNro, ref int iTotalReg, string viewFields)
  91. {
  92. //SPListItemCollection items = null;
  93. int iPageCount = 0;
  94. SPList oLista;
  95. SPQuery oQuery;
  96. oLista = _web.Lists[lista];
  97. int TotalListItems = oLista.ItemCount;
  98. if (rowLimit > 0)
  99. iPageCount = (int)Math.Ceiling(TotalListItems / (decimal)rowLimit);
  100.  
  101. oQuery = new SPQuery();
  102.  
  103. if (query != string.Empty) oQuery.Query = query;//calcular total de registros
  104.  
  105. iTotalReg = SPCount(lista, query);
  106.  
  107. if (rowLimit > 0) oQuery.RowLimit = (uint)rowLimit;
  108. if (viewFields != string.Empty) { oQuery.ViewFields = TranslationViewFields(viewFields); oQuery.ViewFieldsOnly = true; }
  109. int index = 0;
  110. SPListItemCollection items;
  111.  
  112. do
  113. {
  114. items = oLista.GetItems(oQuery);
  115. if (index == IrPaginaNro)
  116. break;
  117. oQuery.ListItemCollectionPosition = items.ListItemCollectionPosition;
  118. index++;
  119. } while (oQuery.ListItemCollectionPosition != null);
  120.  
  121. return items;
  122.  
  123. //oQuery = new SPQuery();
  124. //if (query != string.Empty) oQuery.Query = query;
  125.  
  126. //iTotalReg = SPCount(lista, query);
  127.  
  128. //if (rowLimit > 0) oQuery.RowLimit = rowLimit;
  129. //if (viewFields != string.Empty) { oQuery.ViewFields = TranslationViewFields(viewFields); oQuery.ViewFieldsOnly = true; }
  130. //items = oLista.GetItems(oQuery);
  131. //return items;
  132. }
  133.  
  134. public int SPCount(string lista, string query)
  135. {
  136. try
  137. {
  138. SPQuery oQuery;
  139. SPList oLista;
  140. oLista = _web.Lists[lista];
  141. oQuery = new SPQuery();
  142. oQuery.ViewFields = " <FieldRef Name='ID' />";
  143. oQuery.ViewFieldsOnly = true;
  144. if (query != string.Empty) oQuery.Query = query;
  145. return oLista.GetItems(oQuery).Count;
  146. }
  147. catch (Exception ex)
  148. {
  149. throw ex;
  150. }
  151. }
  152.  
  153. public List<SPListItem> Obtener_ItemsSP(String lista, String query, uint rowLimit, String viewFields)
  154. {
  155. List<SPListItem> result = new List<SPListItem>();
  156. SPList oLista;
  157. SPQuery oQuery;
  158. oLista = _web.Lists[lista];
  159. oQuery = new SPQuery();
  160. if (query != string.Empty) oQuery.Query = query;
  161. if (rowLimit > 0) oQuery.RowLimit = rowLimit;
  162. if (viewFields != string.Empty) { oQuery.ViewFields = TranslationViewFields(viewFields); oQuery.ViewFieldsOnly = true; }
  163. SPListItemCollection items = oLista.GetItems(oQuery);
  164.  
  165. if (items != null && items.Count > 0)
  166. result = items.Cast<SPListItem>().ToList();
  167. return result;
  168. }
  169.  
  170. public Guid create_library(string biblioteca, string lista)
  171. {
  172. _web.AllowUnsafeUpdates = true;
  173.  
  174. Guid newListID = _web.Lists.Add(biblioteca, biblioteca, SPListTemplateType.DocumentLibrary);
  175. SPList list = _web.Lists[newListID];
  176. list.OnQuickLaunch = true;
  177. list.EnableVersioning = true;
  178. list.Title = lista;
  179. list.Update();
  180.  
  181. _web.AllowUnsafeUpdates = false;
  182. return list.ID;
  183. }
  184.  
  185. public void create_folder(Guid biblioteca, string carpeta_nivel2)
  186. {
  187. _web.AllowUnsafeUpdates = true;
  188. SPList library = _web.Lists[biblioteca];
  189. using (new DisabledItemEventsScope())
  190. {
  191. SPListItem folder = library.Folders.Add(library.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, carpeta_nivel2);
  192. folder.Update();
  193. }
  194. _web.AllowUnsafeUpdates = false;
  195. }
  196.  
  197. public void create_folder(Guid biblioteca, string carpeta_nivel2, string carpeta_nivel3)
  198. {
  199. _web.AllowUnsafeUpdates = true;
  200. SPList library = _web.Lists[biblioteca];
  201. using (new DisabledItemEventsScope())
  202. {
  203. SPListItem folder = library.Folders.Add(library.RootFolder.ServerRelativeUrl + "/" + carpeta_nivel2, SPFileSystemObjectType.Folder, carpeta_nivel3);
  204. folder.Update();
  205. }
  206. _web.AllowUnsafeUpdates = false;
  207. }
  208.  
  209. public SPListItem obtener_parametro(string filtro)
  210. {
  211. SPListItem item = null;
  212. SPList oLista = _web.Lists["Parametros del Sistema"];
  213. SPQuery oQuery = new SPQuery();
  214. oQuery.Query = string.Format(@"<Where>
  215. <Eq>
  216. <FieldRef Name='Title' />
  217. <Value Type='Text'>{0}</Value>
  218. </Eq>
  219. </Where>", filtro);
  220. oQuery.RowLimit = 1;
  221. SPListItemCollection items = oLista.GetItems(oQuery);
  222. if (items.Count > 0)
  223. item = items[0];
  224. return item;
  225. }
  226.  
  227. public void enviar_correo_revision(SPListItem item, SPUser usuario_logueado)
  228. {
  229. try
  230. {
  231. #region Correo
  232.  
  233. SPFieldLookupValue sp_unidad = new SPFieldLookupValue(item["LicenciamientoAcreditacion"].ToString());
  234. spConnection conn = new spConnection();
  235. SPListItemCollection items_config = conn.Obtener_Items("Configuración de Correo", "", 0, "");
  236.  
  237. String query_plantilla = String.Format(@"<Where>
  238. <Eq>
  239. <FieldRef Name='Title' />
  240. <Value Type='Text'>{0}</Value>
  241. </Eq>
  242. </Where>", "Actividad Revisada");
  243. SPListItemCollection items_plantillas = conn.Obtener_Items("Plantilla de Correo", query_plantilla, 0, "");
  244.  
  245. if (items_config.Count > 0 && items_plantillas.Count > 0)
  246. {
  247. SPListItem item_config = items_config[0];
  248. SPListItem item_plantilla = items_plantillas[0];
  249.  
  250. ECorreo ec = new ECorreo();
  251. ec.DisplayName = item_config["DisplayName"].ToString();
  252. ec.UserEmail = item_config["UserEmail"].ToString();
  253. ec.Password = item_config["Password"].ToString();
  254. ec.ServerEmail = item_config["ServerEmail"].ToString();
  255. ec.PortServerEmail = int.Parse(item_config["PortServerEmail"].ToString());
  256. ec.UseDefaultCredentials = bool.Parse(item_config["UseDefaultCredentials"].ToString());
  257. ec.EnableSsl = bool.Parse(item_config["EnableSsl"].ToString());
  258.  
  259. String actividad = item["Title"].ToString();
  260. String detalle = item["Detalle"].ToString();
  261. DateTime finicio = DateTime.Parse(item["FechaInicio"].ToString());
  262. DateTime ffin = DateTime.Parse(item["FechaVencimiento"].ToString());
  263.  
  264. if (item["Gestor"] != null)
  265. {
  266. SPFieldUserValue gestor = new SPFieldUserValue(item.Web, item["Gestor"].ToString());
  267. if (gestor.User.Email != null && gestor.User.Email != String.Empty)
  268. {
  269. ec.To = gestor.User.Email;
  270. ec.Subject = item_plantilla["Asunto"].ToString().Replace("[Unidad]", sp_unidad.LookupValue);
  271. ec.Body = item_plantilla["Cuerpo"].ToString().Replace("[Actividad]", actividad).Replace("[Detalle]", detalle).Replace("[FechaInicio]", finicio.ToShortDateString()).Replace("[FechaVencimiento]", ffin.ToShortDateString()).Replace("[Usuario]", gestor.User.Name).Replace("[Responsable]", usuario_logueado.Name);
  272. enviar_email(ec);
  273. }
  274. }
  275.  
  276. item.Web.AllowUnsafeUpdates = true;
  277. item["Reviso"] = true;
  278. item.Update();
  279. item.Web.AllowUnsafeUpdates = false;
  280. }
  281.  
  282. #endregion
  283. }
  284. catch (Exception ex)
  285. {
  286. throw ex;
  287. }
  288. }
  289.  
  290. public SPListItemCollection Obtener_Items_lib(String lista, SPQuery oQuery, uint rowLimit, String viewFields)
  291. {
  292. SPListItemCollection items = null;
  293. SPList oLista;
  294. oLista = _web.Lists[lista];
  295. if (rowLimit > 0) oQuery.RowLimit = rowLimit;
  296. if (viewFields != string.Empty) { oQuery.ViewFields = TranslationViewFields(viewFields); oQuery.ViewFieldsOnly = true; }
  297. items = oLista.GetItems(oQuery);
  298. return items;
  299. }
  300.  
  301. public int insert_item_list(String pListName, Hashtable pFields)
  302. {
  303. SPList list = _web.Lists[pListName];
  304. SPListItem item = list.Items.Add();
  305. foreach (DictionaryEntry entry in pFields)
  306. {
  307. item[(String)entry.Key] = entry.Value;
  308. }
  309.  
  310. //item["Author"] = _user;
  311. //item["Editor"] = _user;
  312.  
  313. _web.AllowUnsafeUpdates = true;
  314. item.Update();
  315. _web.AllowUnsafeUpdates = false;
  316. return item.ID;
  317. }
  318.  
  319. public void delete_item_list(String lista, SPQuery oQuery)
  320. {
  321. SPListItemCollection items = null;
  322. SPList oLista;
  323. oLista = _web.Lists[lista];
  324. items = oLista.GetItems(oQuery);
  325.  
  326. if (items != null && items.Count > 0)
  327. {
  328. SPListItem item = items[0];
  329. _web.AllowUnsafeUpdates = true;
  330. item.Delete();
  331. _web.AllowUnsafeUpdates = false;
  332. }
  333. }
  334.  
  335. public int insert_item_list_attach(String pListName, Hashtable pFields, FileUpload fuArchivo)
  336. {
  337. SPList list = _web.Lists[pListName];
  338. SPListItem item = list.Items.Add();
  339. foreach (DictionaryEntry entry in pFields)
  340. {
  341. item[(String)entry.Key] = entry.Value;
  342. }
  343.  
  344. if (fuArchivo.HasFile && fuArchivo.PostedFile != null)
  345. {
  346. String archivo = replaceUnsupportedCharacters_archivo(fuArchivo.FileName);
  347. item.Attachments.Add(archivo, fuArchivo.FileBytes);
  348. }
  349.  
  350. //item["Author"] = _user;
  351. //item["Editor"] = _user;
  352. _web.AllowUnsafeUpdates = true;
  353. item.Update();
  354. _web.AllowUnsafeUpdates = false;
  355. return item.ID;
  356. }
  357.  
  358. public int insert_item_list_attach_multiple(String pListName, Hashtable pFields, List<EArchivo> archivos)
  359. {
  360. SPList list = _web.Lists[pListName];
  361. SPListItem item = list.Items.Add();
  362. foreach (DictionaryEntry entry in pFields)
  363. {
  364. item[(String)entry.Key] = entry.Value;
  365. }
  366.  
  367. if (archivos != null && archivos.Count > 0)
  368. {
  369. foreach (EArchivo archivo in archivos)
  370. {
  371. if (archivo.FileName != string.Empty && archivo.Base64EncodedString != string.Empty)
  372. {
  373. String nombreArchivo = replaceUnsupportedCharacters_archivo(archivo.FileName);
  374. var base64Content = archivo.Base64EncodedString;
  375. var startIndex = base64Content.IndexOf("base64,", StringComparison.OrdinalIgnoreCase) + 7;
  376. var fileContents = base64Content.Substring(startIndex);
  377. var arrayByte = Convert.FromBase64String(fileContents);
  378. item.Attachments.Add(nombreArchivo, arrayByte);
  379. }
  380. }
  381. }
  382.  
  383. item["Author"] = _user;
  384. item["Editor"] = _user;
  385. _web.AllowUnsafeUpdates = true;
  386. item.Update();
  387. _web.AllowUnsafeUpdates = false;
  388. return item.ID;
  389. }
  390.  
  391. public String replaceUnsupportedCharacters_archivo(String nombre_archivo)
  392. {
  393. nombre_archivo = nombre_archivo.Replace("#", "");
  394. nombre_archivo = nombre_archivo.Replace("%", "");
  395. nombre_archivo = nombre_archivo.Replace("&", "");
  396. nombre_archivo = nombre_archivo.Replace("*", "");
  397. nombre_archivo = nombre_archivo.Replace(":", "");
  398. nombre_archivo = nombre_archivo.Replace("<", "");
  399. nombre_archivo = nombre_archivo.Replace(">", "");
  400. nombre_archivo = nombre_archivo.Replace("¿", "");
  401. nombre_archivo = nombre_archivo.Replace("?", "");
  402. nombre_archivo = nombre_archivo.Replace("/", "");
  403. nombre_archivo = nombre_archivo.Replace("{", "");
  404. nombre_archivo = nombre_archivo.Replace("|", "");
  405. nombre_archivo = nombre_archivo.Replace("}", "");
  406. nombre_archivo = nombre_archivo.Replace("~", "");
  407. nombre_archivo = nombre_archivo.Replace("\\", "");
  408. nombre_archivo = nombre_archivo.Replace("\"", "");
  409. return nombre_archivo;
  410. }
  411.  
  412. public String replaceUnsupportedCharacters_u(String nombre_archivo)
  413. {
  414. nombre_archivo = nombre_archivo.Replace(".", "");
  415. nombre_archivo = nombre_archivo.Replace("#", "");
  416. nombre_archivo = nombre_archivo.Replace("%", " por ciento");
  417. nombre_archivo = nombre_archivo.Replace("&", "");
  418. nombre_archivo = nombre_archivo.Replace("*", "");
  419. nombre_archivo = nombre_archivo.Replace(":", "");
  420. nombre_archivo = nombre_archivo.Replace("<", "");
  421. nombre_archivo = nombre_archivo.Replace(">", "");
  422. nombre_archivo = nombre_archivo.Replace("¿", "");
  423. nombre_archivo = nombre_archivo.Replace("?", "");
  424. nombre_archivo = nombre_archivo.Replace("/", "");
  425. nombre_archivo = nombre_archivo.Replace("{", "");
  426. nombre_archivo = nombre_archivo.Replace("|", "");
  427. nombre_archivo = nombre_archivo.Replace("}", "");
  428. nombre_archivo = nombre_archivo.Replace("~", "");
  429. nombre_archivo = nombre_archivo.Replace("\\", "");
  430. nombre_archivo = nombre_archivo.Replace("\"", "");
  431. return nombre_archivo;
  432. }
  433.  
  434. public void update_item_list_attach(string pListName, int id, Hashtable pFields, FileUpload fuArchivo)
  435. {
  436. SPList list = _web.Lists[pListName];
  437. SPListItem item = list.GetItemById(id);
  438.  
  439. if (item != null)
  440. {
  441. foreach (DictionaryEntry entry in pFields)
  442. {
  443. if (entry.Value != null && entry.Value.ToString() != string.Empty)
  444. item[(string)entry.Key] = entry.Value;
  445. else
  446. item[(string)entry.Key] = null;
  447. }
  448.  
  449. if (fuArchivo.HasFile && fuArchivo.PostedFile != null)
  450. {
  451. String archivo = replaceUnsupportedCharacters_archivo(fuArchivo.FileName);
  452. item.Attachments.Add(archivo, fuArchivo.FileBytes);
  453. }
  454.  
  455. _web.AllowUnsafeUpdates = true;
  456. item.Update();
  457. _web.AllowUnsafeUpdates = false;
  458. }
  459. }
  460.  
  461. public void update_item_list(string pListName, int id, Hashtable pFields)
  462. {
  463. SPList list = _web.Lists[pListName];
  464. SPListItem item = list.GetItemById(id);
  465.  
  466. if (item != null)
  467. {
  468. foreach (DictionaryEntry entry in pFields)
  469. {
  470. if (entry.Value != null && entry.Value.ToString() != string.Empty)
  471. item[(string)entry.Key] = entry.Value;
  472. else
  473. item[(string)entry.Key] = null;
  474. }
  475. _web.AllowUnsafeUpdates = true;
  476. item.Update();
  477. _web.AllowUnsafeUpdates = false;
  478. }
  479. }
  480.  
  481. public void enviar_email(ECorreo ec)
  482. {
  483. if (!string.IsNullOrEmpty(ec.To))
  484. {
  485. spConnection conn2 = new spConnection();
  486.  
  487. SPListItemCollection items_config = conn2.Obtener_Items(Recursos.Listas.AdmConfiguracionCorreo, string.Empty, 0, string.Empty);
  488.  
  489. SPListItem item_config = items_config[0];
  490.  
  491. ec.DisplayName = item_config[Recursos.ConfiguracionCorreo.DisplayName].ToString();
  492. ec.UserEmail = item_config[Recursos.ConfiguracionCorreo.UserEmail].ToString();
  493. ec.Password = item_config[Recursos.ConfiguracionCorreo.Password].ToString();
  494. ec.ServerEmail = item_config[Recursos.ConfiguracionCorreo.ServerEmail].ToString();
  495. ec.PortServerEmail = int.Parse(item_config[Recursos.ConfiguracionCorreo.PortServerEmail].ToString());
  496. ec.UseDefaultCredentials = bool.Parse(item_config[Recursos.ConfiguracionCorreo.UseDefaultCredentials].ToString());
  497. ec.EnableSsl = bool.Parse(item_config[Recursos.ConfiguracionCorreo.EnableSsl].ToString());
  498.  
  499. MailMessage msg = new MailMessage();
  500. msg.From = new MailAddress(ec.UserEmail, ec.DisplayName, Encoding.UTF8);
  501. msg.To.Add(ec.To);
  502. if (ec.Cc != null)
  503. msg.CC.Add(ec.Cc);
  504. msg.Subject = ec.Subject;
  505. msg.SubjectEncoding = Encoding.UTF8;
  506.  
  507. msg.Body = ec.Body;
  508.  
  509.  
  510. msg.BodyEncoding = Encoding.UTF8;
  511. msg.IsBodyHtml = true;
  512. msg.Priority = MailPriority.High;
  513.  
  514. Stream stream;
  515.  
  516. if (ec.Attachment != null && ec.Attachment.Length > 0)
  517. {
  518. stream = new MemoryStream(ec.Attachment);
  519. msg.Attachments.Add(new Attachment(stream, ec.FileName));
  520. }
  521.  
  522. SmtpClient client = new SmtpClient(ec.ServerEmail, ec.PortServerEmail);
  523.  
  524. if (ec.UseDefaultCredentials)
  525. client.UseDefaultCredentials = true;
  526. else
  527. client.Credentials = new NetworkCredential(ec.UserEmail, ec.Password);
  528.  
  529. client.EnableSsl = ec.EnableSsl;
  530. client.DeliveryMethod = SmtpDeliveryMethod.Network;
  531.  
  532. try
  533. {
  534. ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
  535. { return true; };
  536. if (msg.To.Count > 0)
  537. {
  538. client.Send(msg);
  539. }
  540. }
  541. catch (Exception ex)
  542. {
  543. //throw new Exception("No se puede enviar el correo a " + ec.To + " Error Raiz: " + ex.Message, ex);
  544. }
  545. }
  546. }
  547. //**J.A.S.A**
  548. public SPListItem ObtenerAsignaturaXid(int IdAsignatura)
  549. {
  550. SPListItem itemEstado = null;
  551.  
  552. SPSecurity.RunWithElevatedPrivileges(delegate
  553. {
  554. spConnection conn = new spConnection();
  555. string query = string.Format(@" <Where>
  556. <And>
  557. <Eq>
  558. <FieldRef Name='ID' />
  559. <Value Type='Counter'>{0}</Value>
  560. </Eq>
  561. <Eq>
  562. <FieldRef Name='Eliminado' />
  563. <Value Type='Boolean'>false</Value>
  564. </Eq>
  565. </And>
  566. </Where>", IdAsignatura);
  567. SPListItemCollection itemsEstado = conn.Obtener_Items(Recursos.Listas.Asignaturas, query, 1, "");
  568. itemEstado = itemsEstado[0];
  569. });
  570. return itemEstado;
  571. }
  572.  
  573. public SPListItem ObtenerEstadoActivoXid(int IdEstado)
  574. {
  575. SPListItem itemEstado = null;
  576.  
  577. SPSecurity.RunWithElevatedPrivileges(delegate
  578. {
  579. spConnection conn = new spConnection();
  580. string query = string.Format(@"<Where>
  581. <And>
  582. <Eq>
  583. <FieldRef Name='ID' />
  584. <Value Type='Counter'>{0}</Value>
  585. </Eq>
  586. <Eq>
  587. <FieldRef Name='Activo' />
  588. <Value Type='Boolean'>1</Value>
  589. </Eq>
  590. </And>
  591. </Where>", IdEstado);
  592. SPListItemCollection itemsEstado = conn.Obtener_Items(Recursos.Listas.Estados, query, 1, "");
  593. itemEstado = itemsEstado[0];
  594. });
  595. return itemEstado;
  596. }
  597.  
  598. public string ObtenerDescripcionEstadoXid(int IdEstado) {
  599. string itemEstado = null;
  600. SPSecurity.RunWithElevatedPrivileges(delegate
  601. {
  602. spConnection conn = new spConnection();
  603. string query = string.Format(@"<Where>
  604. <Eq>
  605. <FieldRef Name='ID' />
  606. <Value Type='Counter'>{0}</Value>
  607. </Eq>
  608. </Where>", IdEstado);
  609. SPListItemCollection itemsEstado = conn.Obtener_Items(Recursos.Listas.Estados, query, 1, "");
  610. itemEstado = itemsEstado[0][Recursos.CamposBase.Titulo].ToString();
  611. });
  612. return itemEstado;
  613. }
  614.  
  615. public SPListItem ObtenerActividadXid(int IdActividad) {
  616. SPListItem itemActividad = null;
  617. SPSecurity.RunWithElevatedPrivileges(delegate
  618. {
  619. spConnection conn = new spConnection();
  620. string query = string.Format(@"<Where>
  621. <Eq>
  622. <FieldRef Name='ID' />
  623. <Value Type='Counter'>{0}</Value>
  624. </Eq>
  625. </Where>", IdActividad);
  626. SPListItemCollection itemsEstado = conn.Obtener_Items(Recursos.Listas.Actividades, query, 1, "");
  627. itemActividad = itemsEstado[0];
  628. });
  629. return itemActividad;
  630. }
  631.  
  632. public SPListItemCollection ObtenerListaCorreos(string rol) {
  633.  
  634. SPListItemCollection listaCorreo = null;
  635.  
  636. SPSecurity.RunWithElevatedPrivileges(delegate
  637. {
  638. spConnection conn = new spConnection();
  639.  
  640. string query = string.Format(@"<Where>
  641. <Eq>
  642. <FieldRef Name='Roles' LookupId='FALSE'/>
  643. <Value Type='Lookup'>{0}</Value>
  644. </Eq>
  645. </Where>", rol);
  646. SPListItemCollection itemsUsuarios = conn.Obtener_Items(Recursos.Listas.AdmUsuarios, query, 10, "");
  647.  
  648. listaCorreo = itemsUsuarios;
  649. });
  650.  
  651. return listaCorreo;
  652. }
  653.  
  654. public void enviar_Email_Materiales(int IdEstado, SPListItem itemsasignaturas, int IdActividad)
  655. { //int IdAsignatura
  656. string Periodo = "",StrAsignatura="", StrPeriodo="";
  657. List<string> listaRoles = new List<string>();
  658. spConnection conn = new spConnection();
  659. // SPListItem item_ = conn.Obtener_Item(Recursos.Listas.Estados, Convert.ToInt32(IdEstado));
  660. SPListItem RolesEstadoActivo = ObtenerEstadoActivoXid(IdEstado);
  661. // SPListItem Asignatura = ObtenerAsignaturaXid(IdAsignatura);
  662. string StrEstado = ObtenerDescripcionEstadoXid(IdEstado);
  663. #region ObtenerRoles
  664. //string Rol_To = RolesEstadoActivo["Roles"].ToString();
  665. //string roles = new SPFieldLookupValue(Rol_To).LookupValue.ToString();
  666. //string[] rolSplit = Rol_To.Split(';');
  667. SPFieldLookupValueCollection spRoles = new SPFieldLookupValueCollection(RolesEstadoActivo["Roles"].ToString());
  668. listaRoles = spRoles.Select(x => x.LookupValue).ToList();
  669.  
  670. if (itemsasignaturas!=null && IdActividad==0)
  671. {
  672. Periodo = itemsasignaturas["Periodo"]?.ToString();
  673. StrAsignatura = itemsasignaturas[Recursos.CamposBase.Titulo]?.ToString();
  674. StrPeriodo = new SPFieldLookupValue(Periodo)?.LookupValue?.ToString();
  675. }
  676. else if(itemsasignaturas == null && IdActividad != 0)
  677. {
  678. SPListItem ActividadItem = ObtenerActividadXid(IdActividad);
  679. Periodo = ActividadItem["Periodo"]?.ToString();
  680. string Asignatura = ActividadItem[Recursos.Actividad.Asignatura]?.ToString();
  681. StrAsignatura = new SPFieldLookupValue(Asignatura)?.LookupValue?.ToString();
  682. StrPeriodo = new SPFieldLookupValue(Periodo)?.LookupValue?.ToString();
  683. }
  684. //for (int i = 0; i < rolSplit.Length; i++)
  685. //{
  686. // if (i % 2 != 0)
  687. // {
  688. // string admin = rolSplit[i]?.Substring(1);
  689. // listaRoles.Add(admin);
  690. // }
  691. //}
  692.  
  693. #endregion
  694.  
  695. ECorreo ec = new ECorreo();
  696. SPListItemCollection items_plantillas = null;
  697. SPSecurity.RunWithElevatedPrivileges(delegate
  698. {
  699. string plantillaCorreo = Recursos.PlantillaCorreo.MaterialCambioEstado;
  700. items_plantillas = conn.GetItemsPlantilla(plantillaCorreo);
  701. if (items_plantillas != null && items_plantillas.Count > 0)
  702. {
  703. #region Correo
  704. foreach (var rol in listaRoles)
  705. {
  706. SPListItemCollection listaCorreos = ObtenerListaCorreos(rol);
  707. SPListItem item_plantilla = items_plantillas[0];
  708. ec.Subject = item_plantilla[Recursos.AdmPlantillaCorreo.Asunto].ToString();
  709. using (SPSite site = new SPSite(SPContext.Current.Web.Url))
  710. using (SPWeb web = site.OpenWeb())
  711. {
  712. foreach (SPListItem item in listaCorreos)
  713. {
  714. SPFieldUserValue usuario = new SPFieldUserValue(web, item["Usuario"].ToString());
  715. ec.To = usuario.User.Email;
  716.  
  717. ec.Subject = item_plantilla[Recursos.AdmPlantillaCorreo.Asunto].ToString().Replace("@periodo", StrPeriodo).Replace("@estado", StrEstado).Replace("@Docente", usuario.User.Name);
  718. ec.Body = item_plantilla[Recursos.AdmPlantillaCorreo.Cuerpo].ToString().Replace("@Asignatura", StrAsignatura).Replace("@Periodo", StrPeriodo).Replace("@Estado", StrEstado).Replace("@Docente", usuario.User.Name);
  719. try
  720. {
  721. enviar_email(ec);
  722. }
  723. catch (Exception ex)
  724. {
  725. SPutil.EscribirLog(ec.UserEmail, ex.Message.ToString(), ex.StackTrace.ToString(), "Material Cambio Estado");
  726. }
  727. }
  728. }
  729. }
  730. #endregion
  731. }
  732. });
  733. }
  734.  
  735. public void enviar_Email_Materiales(int IdEstado, string periodo)
  736. { //int IdAsignatura
  737. string Periodo = "", StrAsignatura = "", StrPeriodo = "";
  738. List<string> listaRoles = new List<string>();
  739. spConnection conn = new spConnection();
  740. // SPListItem item_ = conn.Obtener_Item(Recursos.Listas.Estados, Convert.ToInt32(IdEstado));
  741. SPListItem RolesEstadoActivo = ObtenerEstadoActivoXid(IdEstado);
  742. // SPListItem Asignatura = ObtenerAsignaturaXid(IdAsignatura);
  743. string StrEstado = ObtenerDescripcionEstadoXid(IdEstado);
  744. #region ObtenerRoles
  745. string Rol_To = RolesEstadoActivo["Roles"].ToString();
  746. SPFieldLookupValueCollection spRoles = new SPFieldLookupValueCollection(RolesEstadoActivo["Roles"].ToString());
  747. listaRoles = spRoles.Select(x => x.LookupValue).ToList();
  748.  
  749.  
  750. #endregion
  751.  
  752. ECorreo ec = new ECorreo();
  753. SPListItemCollection items_plantillas = null;
  754. SPSecurity.RunWithElevatedPrivileges(delegate
  755. {
  756. string plantillaCorreo = Recursos.PlantillaCorreo.ProyeccionCambioEstado;
  757. items_plantillas = conn.GetItemsPlantilla(plantillaCorreo);
  758. if (items_plantillas != null && items_plantillas.Count > 0)
  759. {
  760. #region Correo
  761. foreach (var rol in listaRoles)
  762. {
  763. SPListItemCollection listaCorreos = ObtenerListaCorreos(rol);
  764. SPListItem item_plantilla = items_plantillas[0];
  765. ec.Subject = item_plantilla[Recursos.AdmPlantillaCorreo.Asunto].ToString();
  766. using (SPSite site = new SPSite(SPContext.Current.Web.Url))
  767. using (SPWeb web = site.OpenWeb())
  768. {
  769. foreach (SPListItem item in listaCorreos)
  770. {
  771. SPFieldUserValue usuario = new SPFieldUserValue(web, item["Usuario"].ToString());
  772. ec.To = usuario.User.Email;
  773. ec.Subject = item_plantilla[Recursos.AdmPlantillaCorreo.Asunto].ToString().Replace("@periodo", periodo);
  774. ec.Body = item_plantilla[Recursos.AdmPlantillaCorreo.Cuerpo].ToString().Replace("@Docente", usuario.User.Name).Replace("@periodo", periodo);
  775. try
  776. {
  777. enviar_email(ec);
  778. }
  779. catch (Exception ex)
  780. {
  781. SPutil.EscribirLog(ec.UserEmail, ex.Message.ToString(), ex.StackTrace.ToString(), "Material Cambio Estado");
  782. }
  783. }
  784. }
  785. }
  786. #endregion
  787. }
  788. });
  789. }
  790. //****
  791. SPListItemCollection items_plantillas = null;
  792.  
  793. public SPListItemCollection GetItemsPlantilla(string plantillaCorreo)
  794. {
  795. SPSecurity.RunWithElevatedPrivileges(delegate ()
  796. {
  797. using (SPSite site = new SPSite(url_site))
  798. {
  799. using (SPWeb web = site.OpenWeb())
  800. {
  801. SPList list_plantilla = web.Lists[Recursos.Listas.AdmPlantillasCorreo];
  802. SPQuery query_plantilla = new SPQuery();
  803. query_plantilla.Query = string.Format(@"<Where>
  804. <Eq>
  805. <FieldRef Name='{0}' />
  806. <Value Type='Text'>{1}</Value>
  807. </Eq>
  808. </Where>", Recursos.CamposBase.Titulo,
  809. plantillaCorreo);
  810.  
  811. items_plantillas = list_plantilla.GetItems(query_plantilla);
  812. }
  813. }
  814. });
  815.  
  816. return items_plantillas;
  817. }
  818.  
  819. }
  820. public class SPutil
  821. {
  822. public static void EscribirLog(string datos, string errorMessage, string TrazaException, string metodo)
  823. {
  824. //SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory(metodo, TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, errorMessage, TrazaException);
  825.  
  826.  
  827. string Ruta = ConfigurationManager.AppSettings["RUTA_LOG"].ToString();
  828. string fecha = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); //DateTime.Now.ToString("yyyy/mm/dd") + " " + DateTime.Now.ToString("hh:MM:ss");
  829. string Archivo = Ruta + "\\LogGD-" + DateTime.Now.ToShortDateString().Replace("/", "-") + ".txt";
  830.  
  831. using (StreamWriter sw = new StreamWriter(Archivo, true))
  832. {
  833. sw.WriteLine("");
  834. sw.WriteLine("FECHA: " + fecha);
  835. sw.WriteLine("OPERACION: " + metodo);
  836. sw.WriteLine("DATOS: " + datos);
  837. sw.WriteLine("ERROR: " + errorMessage);
  838. sw.WriteLine("TRAZA: " + TrazaException);
  839. sw.WriteLine("******************************************************************");
  840. sw.WriteLine("");
  841. }
  842. }
  843. public static void ConvertiraPDF(string urlarchivo, string nombrearchivo)
  844. {
  845.  
  846. object str_letter_path = @"D:\Prueba\CV2017.docx";
  847. object outputFilePathPDF = @"D:\Prueba\CV2017.PDF";
  848.  
  849. Word.Application wordApp = new Word.Application();
  850. wordApp.Visible = false;
  851. wordApp.ScreenUpdating = false;
  852.  
  853. object oMissing = System.Reflection.Missing.Value;
  854. object fileFormat = Word.WdSaveFormat.wdFormatPDF;
  855.  
  856. Word.Document doc = wordApp.Documents.Open(ref str_letter_path, ref oMissing,
  857. ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
  858. ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
  859. ref oMissing, ref oMissing, ref oMissing, ref oMissing);
  860.  
  861. doc.Activate();
  862.  
  863. doc.SaveAs(ref outputFilePathPDF,
  864. ref fileFormat, ref oMissing, ref oMissing,
  865. ref oMissing, ref oMissing, ref oMissing, ref oMissing,
  866. ref oMissing, ref oMissing, ref oMissing, ref oMissing,
  867. ref oMissing, ref oMissing, ref oMissing, ref oMissing);
  868.  
  869. object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;
  870. if (doc != null)
  871. ((Word._Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
  872. ((Microsoft.Office.Interop.Word._Application)wordApp).Quit(ref saveChanges, ref oMissing, ref oMissing);
  873. }
  874.  
  875.  
  876. }
  877.  
  878. [Serializable()]
  879. public class EArchivo
  880. {
  881. public String ID { get; set; }
  882. public string Base64EncodedString { get; set; }
  883. public string FileName { get; set; }
  884. public string Estado { get; set; }
  885. public string Comentario { get; set; }
  886. public string URL { get; set; }
  887. }
  888. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement