public async static Task <Opportunity> CreateAsync(Opportunity opportunity) { var wrapperObject = OpportunityWrapper.Load(opportunity); var response = await CapsuleClient.makeRequest <OpportunityWrapper>(BASE_ENDPOINT, "POST", wrapperObject); return(response.Opportunity); }
private OpportunityWrapper ToOpportunityWrapper(Deal deal) { var dealWrapper = new OpportunityWrapper(deal); if (deal.ContactID > 0) { dealWrapper.Contact = ToContactBaseWrapper(DaoFactory.GetContactDao().GetByID(deal.ContactID)); } if (deal.DealMilestoneID > 0) { dealWrapper.Stage = GetDealMilestoneByID(deal.DealMilestoneID); } dealWrapper.AccessList = CRMSecurity.GetAccessSubjectTo(deal) .Select(item => EmployeeWraper.Get(item.Key)).ToItemList(); dealWrapper.IsPrivate = CRMSecurity.IsPrivate(deal); if (!String.IsNullOrEmpty(deal.BidCurrency)) { dealWrapper.BidCurrency = ToCurrencyInfoWrapper(CurrencyProvider.Get(deal.BidCurrency)); } dealWrapper.CustomFields = DaoFactory.GetCustomFieldDao().GetEnityFields(EntityType.Opportunity, deal.ID, false).ConvertAll(item => new CustomFieldWrapper(item)).ToSmartList(); dealWrapper.Members = new List <ContactBaseWrapper>(); var memberIDs = DaoFactory.GetDealDao().GetMembers(deal.ID); var membersList = new List <ContactBaseWrapper>(); foreach (var contactID in memberIDs) { if (contactID == 0) { continue; } var contact = DaoFactory.GetContactDao().GetByID(contactID); if (contact == null) { continue; } membersList.Add(ToContactBaseWrapper(contact)); } dealWrapper.Members = membersList; return(dealWrapper); }
public async static Task <Opportunity> UpdateAsync(long opportunityId, Opportunity opportunity) { // Duration bases cannot be updated opportunity.DurationBasis = null; var wrapperObject = OpportunityWrapper.Load(opportunity); var response = await CapsuleClient.makeRequest <OpportunityWrapper>($"{BASE_ENDPOINT}/{opportunityId}", "PUT", wrapperObject); return(response.Opportunity); }
private IEnumerable <OpportunityWrapper> ToListOpportunityWrapper(ICollection <Deal> deals) { if (deals == null || deals.Count == 0) { return(new List <OpportunityWrapper>()); } var result = new List <OpportunityWrapper>(); var contactIDs = new List <int>(); var dealIDs = new List <int>(); var dealMilestoneIDs = new List <int>(); foreach (var deal in deals) { contactIDs.Add(deal.ContactID); dealIDs.Add(deal.ID); dealMilestoneIDs.Add(deal.DealMilestoneID); } dealMilestoneIDs = dealMilestoneIDs.Distinct().ToList(); var contacts = new Dictionary <int, ContactBaseWrapper>(); var customFields = DaoFactory.GetCustomFieldDao().GetEnityFields(EntityType.Opportunity, dealIDs.ToArray()) .GroupBy(item => item.EntityID) .ToDictionary(item => item.Key, item => item.Select(x => ToCustomFieldWrapper(x))); var dealMilestones = DaoFactory.GetDealMilestoneDao().GetAll(dealMilestoneIDs.ToArray()) .ToDictionary(item => item.ID, item => ToDealMilestoneWrapper(item)); var dealMembers = DaoFactory.GetDealDao().GetMembers(dealIDs.ToArray()); foreach (var value in dealMembers.Values) { contactIDs.AddRange(value); } contactIDs = contactIDs.Distinct().ToList(); if (contactIDs.Count > 0) { DaoFactory.GetContactDao().GetContacts(contactIDs.ToArray()).ForEach(item => { if (item == null) { return; } contacts.Add(item.ID, ToContactBaseWrapper(item)); }); } foreach (var deal in deals) { var dealWrapper = new OpportunityWrapper(deal); if (contacts.ContainsKey(deal.ContactID)) { dealWrapper.Contact = contacts[deal.ContactID]; } if (customFields.ContainsKey(deal.ID)) { dealWrapper.CustomFields = customFields[deal.ID]; } else { dealWrapper.CustomFields = new List <CustomFieldWrapper>(); } if (dealMembers.ContainsKey(dealWrapper.ID)) { dealWrapper.Members = dealMembers[dealWrapper.ID].Where(contacts.ContainsKey).Select(item => contacts[item]); } else { dealWrapper.Members = new List <ContactBaseWrapper>(); } if (dealMilestones.ContainsKey(deal.DealMilestoneID)) { dealWrapper.Stage = dealMilestones[deal.DealMilestoneID]; } dealWrapper.IsPrivate = CRMSecurity.IsPrivate(deal); if (dealWrapper.IsPrivate) { dealWrapper.AccessList = CRMSecurity.GetAccessSubjectTo(deal) .Select(item => EmployeeWraper.Get(item.Key)).ToItemList(); } if (!String.IsNullOrEmpty(deal.BidCurrency)) { dealWrapper.BidCurrency = ToCurrencyInfoWrapper(CurrencyProvider.Get(deal.BidCurrency)); } result.Add(dealWrapper); } return(result); }