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); } }
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); }