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);
        }
Пример #2
0
        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);
        }
Пример #4
0
        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);
        }