175 lines
7.0 KiB
C#
175 lines
7.0 KiB
C#
<Query Kind="Program">
|
|
<Connection>
|
|
<ID>40766b24-ff74-431b-b387-6c221ede77cf</ID>
|
|
<Persist>true</Persist>
|
|
<Server>p3121-sql-02.sdt.local</Server>
|
|
<Database>jazz prd UNC 20180206.1</Database>
|
|
<ShowServer>true</ShowServer>
|
|
</Connection>
|
|
<Reference><ProgramFilesX64>\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Newtonsoft.Json.dll</Reference>
|
|
<NuGetReference>Amazon.Lambda.S3Events</NuGetReference>
|
|
<NuGetReference>AWSSDK.Core</NuGetReference>
|
|
<NuGetReference>AWSSDK.S3</NuGetReference>
|
|
<NuGetReference>RestSharp</NuGetReference>
|
|
<Namespace>Amazon</Namespace>
|
|
<Namespace>Amazon.Auth.AccessControlPolicy</Namespace>
|
|
<Namespace>Amazon.Auth.AccessControlPolicy.ActionIdentifiers</Namespace>
|
|
<Namespace>Amazon.Internal</Namespace>
|
|
<Namespace>Amazon.Lambda.S3Events</Namespace>
|
|
<Namespace>Amazon.MissingTypes</Namespace>
|
|
<Namespace>Amazon.Runtime</Namespace>
|
|
<Namespace>Amazon.Runtime.CredentialManagement</Namespace>
|
|
<Namespace>Amazon.Runtime.CredentialManagement.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.EventStreams</Namespace>
|
|
<Namespace>Amazon.Runtime.EventStreams.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Auth</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Settings</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Transform</Namespace>
|
|
<Namespace>Amazon.Runtime.Internal.Util</Namespace>
|
|
<Namespace>Amazon.Runtime.SharedInterfaces</Namespace>
|
|
<Namespace>Amazon.Runtime.SharedInterfaces.Internal</Namespace>
|
|
<Namespace>Amazon.S3</Namespace>
|
|
<Namespace>Amazon.S3.Encryption</Namespace>
|
|
<Namespace>Amazon.S3.Encryption.Internal</Namespace>
|
|
<Namespace>Amazon.S3.Internal</Namespace>
|
|
<Namespace>Amazon.S3.IO</Namespace>
|
|
<Namespace>Amazon.S3.Model</Namespace>
|
|
<Namespace>Amazon.S3.Model.Internal.MarshallTransformations</Namespace>
|
|
<Namespace>Amazon.S3.Transfer</Namespace>
|
|
<Namespace>Amazon.S3.Util</Namespace>
|
|
<Namespace>Amazon.Util</Namespace>
|
|
<Namespace>Amazon.Util.Internal</Namespace>
|
|
<Namespace>Amazon.Util.Internal.PlatformServices</Namespace>
|
|
<Namespace>Newtonsoft.Json</Namespace>
|
|
<Namespace>Newtonsoft.Json.Converters</Namespace>
|
|
<Namespace>Newtonsoft.Json.Linq</Namespace>
|
|
<Namespace>Newtonsoft.Json.Schema</Namespace>
|
|
<Namespace>Newtonsoft.Json.Serialization</Namespace>
|
|
<Namespace>System</Namespace>
|
|
<Namespace>System.Diagnostics</Namespace>
|
|
<Namespace>System.Diagnostics.Tracing</Namespace>
|
|
<Namespace>System.IO.Compression</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Asn1</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Asn1.Utilities</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Math</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.OpenSsl</Namespace>
|
|
<Namespace>ThirdParty.BouncyCastle.Utilities.IO.Pem</Namespace>
|
|
<Namespace>ThirdParty.Ionic.Zlib</Namespace>
|
|
<Namespace>ThirdParty.Json.LitJson</Namespace>
|
|
<Namespace>ThirdParty.MD5</Namespace>
|
|
<Namespace>RestSharp</Namespace>
|
|
<Namespace>RestSharp.Authenticators</Namespace>
|
|
</Query>
|
|
|
|
private static string baseurl = "https://dev.sdt.local/StrataJazz201931";
|
|
private static Random _rnd;
|
|
|
|
void Main()
|
|
{
|
|
var now = DateTime.Today.AddDays(-1 * (7 + ((DateTime.Today.DayOfWeek - DayOfWeek.Monday)) % 7));
|
|
var staffing = new Staffing
|
|
{
|
|
pr = new PayPeriod
|
|
{
|
|
StartDate = now.AddDays(-14),
|
|
EndDate = now.AddDays(-7)
|
|
},
|
|
Departments = Enumerable.Range(0, 26).ToList()
|
|
.ConvertAll(e => //new Department { department =
|
|
new DeptInfo($"dept_{e}", Random.Next() * 10m, Random.Next() * 10m, Random.Next() * 10m * Random.Next(-1, 1))
|
|
//}
|
|
)
|
|
};
|
|
var data = JsonConvert.SerializeObject(staffing);
|
|
data.Dump();
|
|
SendMessageByTemplateId(data).Content.Dump();
|
|
}
|
|
|
|
internal static Random Random
|
|
{
|
|
get => _rnd ?? (_rnd = new Random());
|
|
set => _rnd = value;
|
|
}
|
|
|
|
// Define other methods and classes here
|
|
public class Staffing
|
|
{
|
|
public PayPeriod pr { get; set; }
|
|
public List<DeptInfo> overall => new List<DeptInfo> { Departments.FirstOrDefault() };
|
|
public List<DeptInfo> departments => new List<DeptInfo>
|
|
{
|
|
new DeptInfo(
|
|
$"Current Pay Period ({pr.endDate:M/dd})",
|
|
Departments.Sum(d => d.latest_total_variance),
|
|
Departments.Sum(d => d.latest_pay_variance),
|
|
Departments.Sum(d => d.latest_flex_variance)
|
|
)
|
|
};
|
|
internal List<DeptInfo> Departments { get; set; }
|
|
}
|
|
|
|
public class PayPeriod
|
|
{
|
|
internal DateTime StartDate { get; set; }
|
|
internal DateTime EndDate { get; set; }
|
|
public string startDate => StartDate.ToString("MM/dd");
|
|
public string endDate => EndDate.ToString("MM/dd");
|
|
}
|
|
|
|
public class Department
|
|
{
|
|
public DeptInfo department { get; set; }
|
|
}
|
|
|
|
public class DeptInfo
|
|
{
|
|
public string hyperlink => baseurl;
|
|
public string name { get; set; }
|
|
internal decimal latest_total_variance { get; set; }
|
|
internal decimal latest_pay_variance { get; set; }
|
|
internal decimal latest_flex_variance { get; set; }
|
|
public string total_variance => $"{latest_total_variance:C}";
|
|
public string pay_variance => $"{latest_pay_variance:C}";
|
|
public string flex_variance => $"{latest_flex_variance:C}";
|
|
public string six_month_total_chart => "graph_sparkline_6_pay_period_-1281183930.png";
|
|
public string six_month_pay_chart => "graph_sparkline_6_pay_period_1140344931.png";
|
|
public string six_month_flex_chart => "graph_sparkline_6_pay_period_489356044.png";
|
|
public string total_color => latest_total_variance >= 0 ? "positive" : "negative";
|
|
public string pay_color => latest_pay_variance >= 0 ? "positive" : "negative";
|
|
public string flex_color => latest_flex_variance >= 0 ? "positive" : "negative";
|
|
|
|
public DeptInfo(string deptName, decimal total, decimal pay, decimal flex)
|
|
{
|
|
name = deptName;
|
|
latest_total_variance = total;
|
|
latest_pay_variance = pay;
|
|
latest_flex_variance = flex;
|
|
}
|
|
}
|
|
|
|
public static IRestResponse SendMessageByTemplateId(string jsonStr)
|
|
{
|
|
RestClient client = new RestClient();
|
|
client.BaseUrl = new Uri("https://api.mailgun.net/v3/notifications-dev.stratanetwork.com");
|
|
client.Authenticator =
|
|
new HttpBasicAuthenticator("api",
|
|
"key-12ea6389d906cef290ad8a0557a3a8c4");
|
|
RestRequest request = new RestRequest();
|
|
//request.AddParameter("domain", "notifications.stratanetwork.com", ParameterType.UrlSegment);
|
|
//request.Resource = "{domain}/messages";
|
|
request.Resource = "/messages";
|
|
request.AddParameter("from", "Mailgun Sandbox <postmaster@notifications.stratanetwork.com>");
|
|
//request.AddParameter("to", "Dhara <dpatel@stratadecision.com>");
|
|
//request.AddParameter("to", "Nicole <nmcguire@stratadecision.com>");
|
|
request.AddParameter("to", "Thom Lamb <tlamb@stratadecision.com>");
|
|
//request.AddParameter("to", "Kevin Lamb <klamb@stratadecision.com>");
|
|
//request.AddParameter("to", "Shruthi Agni <sagni@stratadecision.com>");
|
|
//request.AddParameter("to", "Tucker Debolt <tdebolt@stratadecision.com>");
|
|
request.AddParameter("subject", "Hello Thom Lamb");
|
|
//request.AddParameter("template", "daily_pr_snapshot");
|
|
request.AddParameter("template", "overall_pr_notification");
|
|
request.AddParameter("h:X-Mailgun-Variables", jsonStr);
|
|
request.Method = Method.POST;
|
|
return client.Execute(request);
|
|
} |