public static void Main(string[] args) { try { var client = new DistributionServiceClient(); var request = new LspRequest { CoopStoreId = 111, HostName = "Host A", IpAddress = "122.111.111.333", PackageVersionId = 23, PosManufacturerName = "Ericsson", PosNumber = "123412341234", PosVersion = "1.2.0", TerminalSerialNumber = "111222333444555" }; var assemblyInfos = new List<AssemblyInfo> { new AssemblyInfo {AssemblyName = "Hibernate Assembly 1", AssemblyVersion = "1.0.0.1"}, new AssemblyInfo {AssemblyName = "Spring Assembly 2", AssemblyVersion = "2.0.0.1"}, new AssemblyInfo{ AssemblyName = "NUnit Assembly", AssemblyVersion = "6.7.8" } }; request.AssemblyInfos = assemblyInfos; var package = client.GetPackage(request); Console.WriteLine("Status: " + package.Status); Console.WriteLine("Message: " + package.Message); Console.WriteLine("PackageVersionId: " + package.PackageVersionId); Console.WriteLine("Md5CheckSum: " + package.Md5CheckSum); File.WriteAllBytes("C:\\RecievedPackage.7z", package.PackageContents); Console.WriteLine("Congratulations! All went well..."); Console.ReadLine(); } catch (Exception exception) { Console.WriteLine(exception.Message); Console.WriteLine(exception.InnerException.Message); Console.ReadLine(); } }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <returns></returns> private LspPackage GetPackage(LspRequest request) { return _client.GetPackage(request); }
/// <summary> /// Inserts point of sales call data into database /// </summary> /// <param name="request"></param> private void InsertPosCallLog(LspRequest request) { var posCallLog = new PosCallLog { DateCreated = DateTime.Now, CoopStoreId = request.CoopStoreId, HostName = request.HostName, IpAddress = request.IpAddress, PackageVersionId = request.PackageVersionId, PosManufacturerName = request.PosManufacturerName, PosNumber = request.PosNumber, PosVersion = request.PosVersion, TerminalSerialNumber = request.TerminalSerialNumber }; var posCallLogId = _posCallLogDao.Save(posCallLog); if (posCallLog.PosAssemblyLogs != null) { foreach (var assembly in request.AssemblyInfos) { _posAssemblyLogDao.Save(new PosAssemblyLog { AssemblyName = assembly.AssemblyName, AssemblyVersion = assembly.AssemblyVersion, PosCallLogId = posCallLogId}); } } }
/// <summary> /// Creates pos request message which can be reused in different methods. /// </summary> /// <returns></returns> private static LspRequest CreatePosRequest(int coopStoreId, int packageVersionId) { var request = new LspRequest(); request.CoopStoreId = coopStoreId; request.HostName = "Host 1"; request.IpAddress = "192.11.12.33"; request.PackageVersionId = packageVersionId; request.PosManufacturerName = "R2M"; request.PosNumber = "12341234"; request.PosVersion = "1.2.0"; request.TerminalSerialNumber = "123451234512345"; var assemblyInfos = new List<AssemblyInfo>(); assemblyInfos.Add(new AssemblyInfo { AssemblyName = "Hibernate Assembly 1", AssemblyVersion = "1.0.0.1" }); assemblyInfos.Add(new AssemblyInfo { AssemblyName = "Spring Assembly 2", AssemblyVersion = "2.0.0.1" }); request.AssemblyInfos = assemblyInfos; return request; }
public LspPackage GetPackage(LspRequest request) { var lspPackage = new LspPackage(); try { // Step : Log the information in file Logger.Info(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Request recieved :{2}", request.PosNumber, request.CoopStoreId, request)); // Step : Insert data into poscalllog and posassemblylog tables in database InsertPosCallLog(request); // Step : Lookup if there is a new package version in the database (packageversions) - packageversion var packageVersion = LookupLatestPackageVersion(request.PackageVersionId); Logger.Debug(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Installed package :{2} and the Latest available package is :{3} ", request.PosNumber, request.CoopStoreId, request.PackageVersionId, packageVersion)); if (packageVersion == null) { lspPackage.Status = 0; // Nothing new. lspPackage.Message = "No new package available."; // Nothing else simply return! Logger.Info(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Response sent :{2}", request.PosNumber, request.CoopStoreId, lspPackage.Message)); return lspPackage; } // Step : Lookup to which groups this package can be deployed (packagegroups) - groups list var packageGroupsList = LookupPackageGroupsByPackageVersionId(packageVersion.Id); Logger.Info(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || PackageGroupsList.Count :{2} for PackagVersion.Id :{3}", request.PosNumber, request.CoopStoreId, packageGroupsList.Count, packageVersion.Id)); if (packageGroupsList.Count > 0) { // Step : Lookup if coopstoreid belongs to any of the groups var groupStoresList = LookupGroupStoresByStoreId(request.CoopStoreId); Logger.Debug(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || GroupStoresList.Count :{2}", request.PosNumber, request.CoopStoreId, groupStoresList.Count)); if (groupStoresList.Count > 0) { foreach (var groupStore in groupStoresList) { var gs = groupStore; var packageGroup = from g in packageGroupsList where g.GroupId == gs.GroupId select g; var packageGroups = packageGroup as PackageGroup[] ?? packageGroup.ToArray(); if (packageGroups.FirstOrDefault() == null) continue; lspPackage.Status = 1; // Something new. lspPackage.Message = "New package attached."; lspPackage.ActivationTime = packageGroups.First().ActivationTimestamp; // Activation timestamp lspPackage.PackageVersionId = packageVersion.Id; // Package verison id lspPackage.Filename = packageVersion.PackageName; lspPackage.PackageContents = File.ReadAllBytes(packageVersion.PackagePath); lspPackage.Md5CheckSum = CalculateChecksum(packageVersion.PackagePath); Logger.Info(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Response sent :{2}", request.PosNumber, request.CoopStoreId, lspPackage.ToStringMini())); return lspPackage; } lspPackage.Status = 0; // Nothing new. lspPackage.Message = "New package available but it hasn't been assigned to any group containing this store."; // Nothing else simply return! Logger.Info(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Response sent :{2}", request.PosNumber, request.CoopStoreId, lspPackage.Message)); return lspPackage; } lspPackage.Status = 0; // Nothing new. lspPackage.Message = "New package available but store hasn't been assigned to any group."; // Nothing else simply return! Logger.Info(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Response sent :{2}", request.PosNumber, request.CoopStoreId, lspPackage.Message)); return lspPackage; } lspPackage.Status = 0; // Nothing new. lspPackage.Message = "New package available but package hasn't been assigned to any group."; // Nothing else simply return! Logger.Info(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Response sent :{2}", request.PosNumber, request.CoopStoreId, lspPackage.Message)); return lspPackage; } catch (Exception exception) { Logger.Error(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Exception :{2}", request.PosNumber, request.CoopStoreId, exception.Message)); Logger.Error(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Exception :{2}", request.PosNumber, request.CoopStoreId, exception.StackTrace)); lspPackage.Status = 2; // Exception! Anything went wrong. Contact system admin. lspPackage.Message = "Exception occured. Please contact admininstrator!"; Logger.Info(String.Format("Processing LspPackage request for PosNumber:{0}: StoreId:{1} || Response sent :{2}", request.PosNumber, request.CoopStoreId, lspPackage.Message)); return lspPackage; } }