/// <summary> /// Allows the REST API to create or update an affiliate /// </summary> /// <param name="parameters"> /// Parameters passed in the URL of the REST API call. If there is a first parameter found in the /// URL, the method will assume it is the affiliate ID and that this is an update, otherwise it assumes to create an /// affiliate. /// </param> /// <param name="querystring">Name/value pairs from the REST API call querystring. This is not used in this method.</param> /// <param name="postdata">Serialized (JSON) version of the AffiliateDTO object</param> /// <returns>AffiliateDTO - Serialized (JSON) version of the affiliate</returns> public override string PostAction(string parameters, NameValueCollection querystring, string postdata) { var data = string.Empty; var ids = FirstParameter(parameters); long id = 0; long.TryParse(ids, out id); var isReferrals = GetParameterByIndex(1, parameters); if (isReferrals.Trim().ToLowerInvariant() == "referrals") { // Create Referral var responseA = new ApiResponse <AffiliateReferralDTO>(); AffiliateReferralDTO postedItemA = null; try { postedItemA = Json.ObjectFromJson <AffiliateReferralDTO>(postdata); } catch (Exception ex) { responseA.Errors.Add(new ApiError("EXCEPTION", ex.Message)); return(responseA.ObjectToJson()); } var itemA = new AffiliateReferral(); itemA.FromDto(postedItemA); HccApp.ContactServices.AffiliateReferrals.Create2(itemA, true); responseA.Content = itemA.ToDto(); data = responseA.ObjectToJson(); } else { // Create/Update Affiliate var responseB = new ApiResponse <AffiliateDTO>(); AffiliateDTO postedItem = null; try { postedItem = Json.ObjectFromJson <AffiliateDTO>(postdata); } catch (Exception ex) { responseB.Errors.Add(new ApiError("EXCEPTION", ex.Message)); return(responseB.ObjectToJson()); } var item = new Affiliate(); item.FromDto(postedItem); if (id < 1) { var existing = HccApp.ContactServices.Affiliates.FindByAffiliateId(item.AffiliateId); if (existing == null || existing.Id < 1) { // 20140408 - Updated to call the current repository method, instead of allowing the error to be thrown var result = CreateUserStatus.None; try { // set a temporary password item.Password = PasswordGenerator.GeneratePassword(8); // create the affiliate HccApp.ContactServices.Affiliates.Create(item, ref result); } catch (Exception createException) { // return the exception to the calling method responseB.Errors.Add(new ApiError { Code = "EXCEPTION", Description = createException.Message }); } if (result == CreateUserStatus.Success) { // send the affiliate responseB.Content = item.ToDto(); } else { // send a response why the affiliate wasn't created responseB.Errors.Add(new ApiError { Code = "USERNOTCREATED", Description = result.ToString() }); } id = item.Id; } else { try { responseB.Content = existing.ToDto(); id = existing.Id; } catch (Exception exUpdate) { responseB.Errors.Add(new ApiError { Code = "EXCEPTION", Description = exUpdate.Message }); } } } else { try { HccApp.ContactServices.Affiliates.Update(item); } catch (Exception ex) { responseB.Errors.Add(new ApiError { Code = "EXCEPTION", Description = ex.Message }); } id = item.Id; responseB.Content = item.ToDto(); } data = responseB.ObjectToJson(); } return(data); }
// Create or Update public override string PostAction(string parameters, System.Collections.Specialized.NameValueCollection querystring, string postdata) { string data = string.Empty; string ids = FirstParameter(parameters); long id = 0; long.TryParse(ids, out id); string isReferrals = GetParameterByIndex(1, parameters); if (isReferrals.Trim().ToLowerInvariant() == "referrals") { // Create Referral ApiResponse <AffiliateReferralDTO> responseA = new ApiResponse <AffiliateReferralDTO>(); AffiliateReferralDTO postedItemA = null; try { postedItemA = MerchantTribe.Web.Json.ObjectFromJson <AffiliateReferralDTO>(postdata); } catch (Exception ex) { responseA.Errors.Add(new ApiError("EXCEPTION", ex.Message)); return(MerchantTribe.Web.Json.ObjectToJson(responseA)); } AffiliateReferral itemA = new AffiliateReferral(); itemA.FromDto(postedItemA); MTApp.ContactServices.AffiliateReferrals.Create2(itemA, true); responseA.Content = itemA.ToDto(); data = MerchantTribe.Web.Json.ObjectToJson(responseA); } else { // Create/Update Affiliate ApiResponse <AffiliateDTO> responseB = new ApiResponse <AffiliateDTO>(); AffiliateDTO postedItem = null; try { postedItem = MerchantTribe.Web.Json.ObjectFromJson <AffiliateDTO>(postdata); } catch (Exception ex) { responseB.Errors.Add(new ApiError("EXCEPTION", ex.Message)); return(MerchantTribe.Web.Json.ObjectToJson(responseB)); } Affiliate item = new Affiliate(); item.FromDto(postedItem); if (id < 1) { Affiliate existing = MTApp.ContactServices.Affiliates.FindByReferralId(item.ReferralId); if (existing == null || existing.Id < 1) { // Create bool result = MTApp.ContactServices.Affiliates.Create(item); responseB.Content = item.ToDto(); id = item.Id; } else { responseB.Content = existing.ToDto(); id = existing.Id; } } else { MTApp.ContactServices.Affiliates.Update(item); id = item.Id; responseB.Content = item.ToDto(); } data = MerchantTribe.Web.Json.ObjectToJson(responseB); } return(data); }