コード例 #1
0
        public static MieRequestResponseModel PutRequest(MieRequestModel request)
        {
            // serialise model to xml
            var requestXml = ModelToString(ref request);

            requestXml = requestXml.Replace(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "").Replace(" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", "");
            requestXml = requestXml.Replace("encoding=\"utf-16\"", "encoding=\"utf-8\"");

            // Request authentication
            var mieClient = new MieProducer.epcvServiceSoapClient();
            var alogon    = string.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?><xml><Token><UserName>{0}</UserName><Password>{1}</Password><Source>{2}</Source></Token></xml>",
                                          Constants.MieUsername, Constants.MiePassword, Constants.MieSource);
            var data = mieClient.ksoPutRequest(alogon, requestXml);

            // Serialise result
            XmlSerializer serializer = new XmlSerializer(typeof(MieRequestResponseModel));

            using (var reader = new StringReader(data))
            {
                var response = (MieRequestResponseModel)serializer.Deserialize(reader);

                // log error
                //Methods.WriteToLog(string.Format("Request {0}: {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), requestXml));
                //Methods.WriteToLog(string.Format("Response: {0} {1}", response.Status.Code, response.Status.Description));

                return(response);
            }
        }
コード例 #2
0
        public string PostAddCandidate([FromHeader] string Firstname, [FromHeader] string Surname, [FromHeader] string Idnumber, [FromHeader] string CompanyName, [FromHeader] string IDVerification, [FromHeader] string CrimCheck)
        {
            string result = "";

            try
            {
                CreatorEntities creatordb = new CreatorEntities();

                VALINFOEntities valinfodb = new VALINFOEntities();
                string          username  = User.Identity.GetUserName().ToString();
                Client          client    = valinfodb.Clients.Single(x => x.CompanyName == CompanyName);
                Candidate       candidate = valinfodb.Candidates.Where(x => x.IDNumber == Idnumber && x.ClientID == client.ClientID && x.AppUserID == username).SingleOrDefault();
                if (candidate == null)
                {
                    candidate.Firstname = Firstname;
                    candidate.Surname   = Surname;
                    candidate.IDNumber  = Idnumber;
                    candidate.Cellphone = "0760619183";
                    candidate.ClientID  = client.ClientID;
                    candidate.AppUserID = User.Identity.GetUserName();
                    valinfodb.Candidates.Add(candidate);
                    valinfodb.SaveChanges();
                }

                var localRequest = new MieRequest()
                {
                    CandidateID = candidate.CandidateID,
                    ClientID    = candidate.ClientID,
                    Date        = DateTime.Now,
                    RequestType = 0,
                    UserID      = "433a858b-3b33-4c65-92df-b8eea190ecf9"
                };
                valinfodb.MieRequests.Add(localRequest);
                valinfodb.SaveChanges();
                if (candidate != null && Convert.ToBoolean(IDVerification))
                {
                    ItemTypeViewModel itemTypeViewModel = new ItemTypeViewModel();
                    itemTypeViewModel.Code     = "IDALG";
                    itemTypeViewModel.Name     = "MIE ID Validation";
                    itemTypeViewModel.IsActive = true;

                    List <ItemTypeViewModel> itemTypeViewModelList = new List <ItemTypeViewModel>();
                    itemTypeViewModelList.Add(itemTypeViewModel);
                    var items = new List <ItemType>();
                    items = Services.ItemTypes.Join(itemTypeViewModelList, x => x.Code, i => i.Code, (x, i) => x).Distinct().ToList();
                    var requestModel = new MieRequestModel();
                    requestModel.Request = new Models.Request()
                    {
                        ClientKey             = Services.Client.Key,
                        AgentKey              = Services.Agent.Key,
                        AgentClient           = Services.Agent.ClientKey,
                        FirstNames            = candidate.Firstname,
                        Surname               = candidate.Surname,
                        KnownAs               = candidate.Firstname,
                        IdNumber              = !string.IsNullOrWhiteSpace(candidate.IDNumber) ? candidate.IDNumber : "",
                        Passport              = !string.IsNullOrWhiteSpace(candidate.Passport) ? candidate.Passport : "",
                        DateOfBirth           = candidate.BirthDate.HasValue ? candidate.BirthDate.Value.ToString("s") : IdNumberToDateOfBirth(candidate.IDNumber),
                        Source                = Constants.MieRequestSource,
                        RemoteCaptureDate     = DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK"),
                        RemoteSendDate        = DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK"),
                        ContactNumber         = "",
                        RemoteRequest         = localRequest.RequestID.ToString(),
                        PrerequisiteGroupList = new PrerequisiteGroupList(),
                        ItemList              = new ItemList()
                        {
                            Item = new List <MieItem>()
                        }
                    };
                    foreach (var item in items.Select((value, i) => new { i, value }))
                    {
                        var requestItem = new MieRequestItem
                        {
                            IsPackageItem = false,
                            Amount        = GetProductAmount(item.value.Code, client.Category, client.ClientID, null),
                            ClientID      = candidate.ClientID,
                            ItemCode      = item.value.Code,
                            RequestID     = localRequest.RequestID
                        };
                        valinfodb.MieRequestItems.Add(requestItem);
                        valinfodb.SaveChanges();

                        requestModel.Request.ItemList.Item.Add(new MieItem
                        {
                            RemoteItemKey = requestItem.RequestItemID.ToString(),
                            ItemTypeCode  = item.value.Code,
                            Indemnity     = (!string.IsNullOrEmpty(item.value.IndemnityType) && !item.value.IndemnityType.Equals("none", StringComparison.InvariantCultureIgnoreCase)) ? "true" : "false",

                            // Handle Input groups and attributes
                            ItemInputGroupList = GetInputGroupList(item.value, itemTypeViewModelList)
                        });
                    }
                    try
                    {
                        // Post request
                        var data = Services.PutRequest(requestModel);

                        // Create user action
                        if (data != null && data.Status != null && data.Status.Code == "0")
                        {
                            if (data.Request != null)
                            {
                                localRequest.Status       = (int)MieRequestStatus.NoResult; // No results returned yet.
                                localRequest.MieRequestID = Convert.ToInt64(data.Request.RequestKey);
                                valinfodb.SaveChanges();
                            }


                            candidate.VettingStatus = 1;

                            candidate.DateModified = DateTime.UtcNow.AddHours(2);

                            valinfodb.SaveChanges();
                        }
                        else
                        {
                            var itemsToDelete = valinfodb.MieRequestItems.Where(x => x.RequestID == localRequest.RequestID);
                            valinfodb.MieRequestItems.RemoveRange(itemsToDelete);
                            valinfodb.MieRequests.Remove(localRequest);
                            valinfodb.SaveChanges();
                            return(data.Status.Description);
                        }
                    }
                    catch (Exception ex)
                    {
                        var itemsToDelete = valinfodb.MieRequestItems.Where(x => x.RequestID == localRequest.RequestID);
                        valinfodb.MieRequestItems.RemoveRange(itemsToDelete);
                        valinfodb.MieRequests.Remove(localRequest);
                        valinfodb.SaveChanges();
                        return("Request failed, please try again.");
                    }
                }
                if (candidate != null && Convert.ToBoolean(CrimCheck))
                {
                }
                result = "success";
            }
            catch (Exception ex)
            {
                result = "Error: " + ex.Message;
            }
            return(result);
        }