Files
BeWoPlaner/Service/Core/Utils.cs
2017-04-03 13:07:06 +02:00

204 lines
6.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Globalization;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Security.Cryptography;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Xml;
using BeWo.Data.Entities;
using BeWo.Service.ServiceContracts;
using BeWo.Data;
using BS.Shared;
using DevExpress.XtraPrinting.Native;
namespace BeWo.Service.Core
{
public class Utils
{
public static FaultException<BeWoFault> CreateBeWoFaultException(Exception ex)
{
try
{
SendErrorMail("MYSQL EXCEPTION - AUTOMATED MAIL NOTIFICATION", ex.ToString());
}
catch
{
}
return new FaultException<BeWoFault>(new BeWoFault(ex), ex.ToString());
}
public static string GetClientIP()
{
if (OperationContext.Current != null)
{
MessageProperties properties = OperationContext.Current.IncomingMessageProperties;
var endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
return endpoint.Address;
}
return null;
}
public static string GetMD5(string val)
{
var lMD5 = new MD5CryptoServiceProvider();
string lHash = BitConverter.ToString(lMD5.ComputeHash(Encoding.UTF8.GetBytes(val)));
return lHash;
}
public static bool IsValidEmail(string email)
{
return Regex.IsMatch(email, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}
public static bool SendErrorMail(string subject, string body)
{
string sendMailSetting = ConfigurationManager.AppSettings.Get("SendMailOnError");
bool sendMail = false;
if (bool.TryParse(sendMailSetting, out sendMail))
{
if (sendMail)
return SendMail(subject, body, ConfigurationManager.AppSettings.Get("Recipient"));
}
return false;
}
public static bool SendMail(string subject, string body, string toAddress)
{
return SendMail(null, null, subject, body, toAddress);
}
public static bool SendMail(string senderName, string senderEMail, string subject, string body, string toAddress)
{
var server = ConfigurationManager.AppSettings.Get("SmptServer");
var user = ConfigurationManager.AppSettings.Get("SmtpUser");
var pass = ConfigurationManager.AppSettings.Get("SmtpPassword");
String to = toAddress;
if (String.IsNullOrEmpty(to))
to = ConfigurationManager.AppSettings.Get("SupportEMail");
if (String.IsNullOrEmpty(to))
to = "support@bewoplaner.de";
if (senderEMail == null)
senderEMail = "bewoapp@bewoplaner.de";
if (to.Equals("support@bewoplaner.de"))
{
var body2 = "Kunde: " + MultitenancyOperationContextExt.Current.Tenant;
//body2 += "\r\nIP: " + GetClientIP();
body += "\n\n" + body2;
}
return SendMail(senderEMail, senderName, to, subject, body, server, user, pass);
}
public static bool SendMail(string fromEMail, string fromName, string to, string subject, string body, string smtpServer, string smtpUser, string smtpPassword)
{
try
{
if (!IsValidEmail(to) || !IsValidEmail(fromEMail))
{
return false;
}
MailMessage message = null;
if (String.IsNullOrEmpty(fromName))
message = new MailMessage(fromEMail, to, subject, body);
else
{
MailAddress fromMailAddress = new MailAddress(fromEMail, fromName);
MailAddress toMailAddress = new MailAddress(to);
message = new MailMessage(fromMailAddress, toMailAddress);
//message.ReplyTo = new MailAddress(fromEMail, fromName);
message.Subject = subject;
message.Body = body;
}
message.BodyEncoding = Encoding.UTF8;
message.IsBodyHtml = false;
var mailClient = new SmtpClient(smtpServer, 587) { Credentials = new NetworkCredential(smtpUser, smtpPassword) };
mailClient.EnableSsl = true;
mailClient.SendAsync(message, null);
return true;
}
catch
{
return false;
}
}
public static string[][] T(List<string> pSearchParameter, int pSearchFieldCount)
{
//List<string> lDifferentParameter;
return null;
}
public static string GetRecurringAppointmentsId(SchedulerAppointment appointment)
{
var erg = string.Empty;
if (appointment.RecurrenceInfo == null)
return erg;
using (var reader = XmlReader.Create(new StringReader(appointment.RecurrenceInfo)))
{
reader.ReadToFollowing("RecurrenceInfo");
reader.MoveToAttribute("Id");
erg = reader.Value;
}
return erg;
}
public static DateTime[] GetRecurrenceInterval(SchedulerAppointment appointment)
{
var erg = new DateTime[2];
using (var reader = XmlReader.Create(new StringReader(appointment.RecurrenceInfo)))
{
reader.ReadToFollowing("RecurrenceInfo");
reader.MoveToAttribute("Start");
DateTime outValue;
var parsingSuccessful = DateTime.TryParseExact(reader.Value, @"MM\/dd\/yyyy HH:mm:ss", null, DateTimeStyles.None, out outValue);
erg[0] = outValue;
reader.MoveToAttribute("End");
parsingSuccessful = DateTime.TryParseExact(reader.Value, @"MM\/dd\/yyyy HH:mm:ss", null, DateTimeStyles.None, out outValue);
erg[1] = outValue;
}
return erg;
}
public static bool UserHasRight(ApplicationUser user, UserRightType right)
{
foreach (var ug in user.UserGroups)
{
foreach (var rr in ug.Rights)
{
if (rr.RightType == right)
{
return true;
}
}
}
return false;
}
}
}