예제 #1
0
        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();
            }
        }
예제 #2
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 private LspPackage GetPackage(LspRequest request)
 {
     return _client.GetPackage(request);
 }
예제 #3
0
        /// <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;
 }
예제 #5
0
        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;
            }
        }