private decimal GetProductAmount(string code, int category, int clientID, int?packageID = null) { VALINFOEntities valinfodb = new VALINFOEntities(); var product = valinfodb.VerificationProducts.Where(x => x.ItemCode == code); if (product != null) { var clientPricing = valinfodb.ProductPriceEntries.Where(x => (x.VerificationProduct.ItemCode == code) && (x.ClientID == clientID)); return(clientPricing != null?clientPricing.Select(x => x.Price).Single() : product.Select(x => x.SellingPrice.Value).Single()); } else { return(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); }