/// <summary> /// Метод пытается изменить основной контакт на клиенте /// </summary> /// <param name="accountViewModel"></param> /// <param name="errors"></param> /// <returns></returns> public bool TryChangePrimaryContact(AccountViewModel accountViewModel, Account account, ModelStateDictionary modelState) { Dictionary <string, string> errors = validator.ChangePrimaryContactCheck(accountViewModel, account); if (errors.Count > 0) { errors.Keys.ToList().ForEach(error => modelState.AddModelError(error, errors[error])); return(false); } // В зависимости от типа клиента switch (account.AccountType) { // Для физических лиц основной контакт является обязательным case AccountType.Individual: Guid primaryContactId = Guid.Parse(accountViewModel.PrimaryContactId); AccountContact primaryContact = context.AccountContacts.FirstOrDefault(i => i.Id == primaryContactId); account.PrimaryContactId = primaryContactId; account.Name = primaryContact.GetFullName(); break; // Для остальных типов клиентов основной контакт может отсутствовать case AccountType.IndividualEntrepreneur: account.PrimaryContactId = string.IsNullOrEmpty(accountViewModel.PrimaryContactId) ? Guid.Empty : Guid.Parse(accountViewModel.PrimaryContactId); break; } context.Accounts.Update(account); context.SaveChanges(); return(true); }
private void BindAccountContact() { try { AccountContact accountContact = AccountContact.GetAccountContactByAccountContactId(this.accountContactId); TextBoxFirstName.Text = accountContact.FirstName; TextBoxLastName.Text = accountContact.LastName; TextBoxContactNumber.Text = accountContact.ContactNumber; TextBoxEmail.Text = accountContact.Email; TextBoxPosition.Text = accountContact.Position; } catch (System.Data.SqlClient.SqlException sqlEx) { for (int i = 0; i < sqlEx.Errors.Count; i++) { LabelError.Text += (sqlEx.Errors[i].Message + "<br />"); } PanelError.Visible = true; } catch (Exception exception) { LabelError.Text += (exception.Message + "<br />"); PanelError.Visible = true; } }
/// <summary> /// Метод выполняет проверки, необходимые при изенении основного контакта на клиенте /// </summary> /// <param name="accountViewModel"></param> /// <returns></returns> public Dictionary <string, string> ChangePrimaryContactCheck(AccountViewModel accountViewModel, Account account) { // Для физических лиц основной контакт является обязательным if (account.AccountType == AccountType.Individual && string.IsNullOrEmpty(accountViewModel.PrimaryContactId)) { errors.Add("PrimaryIndividualContactIsRequired", resManager.GetString("PrimaryIndividualContactIsRequired")); return(errors); } // Для остальных типов клиентов основной контакт не является обязательным, поэтому осуществляется возврат из метода if (account.AccountType != AccountType.Individual && string.IsNullOrEmpty(accountViewModel.PrimaryContactId)) { return(errors); } // Если не получается распарсить строку с контактом, возвращается ошибка if (!Guid.TryParse(accountViewModel.PrimaryContactId, out Guid primaryContactId)) { errors.Add("AccountContactNotFound", resManager.GetString("AccountContactNotFound")); return(errors); } // Если контак не найден, также возвращается ошибка AccountContact accountContact = account.AccountContacts.FirstOrDefault(i => i.Id == primaryContactId); if (accountContact == null) { errors.Add("AccountContactNotFound", resManager.GetString("AccountContactNotFound")); return(errors); } return(errors); }
public async Task Update(AccountContact contact) { Contacts.Attach(contact); var entry = Entry(contact); entry.State = EntityState.Modified; await SaveChangesAsync(); }
public async Task DeleteContact(Guid id) { var contact = new AccountContact { Id = id }; Contacts.Attach(contact); Contacts.Remove(contact); await SaveChangesAsync(); }
protected void ButtonSave_Click(object sender, EventArgs e) { if (Page.IsValid) { AccountContact accountContact = new AccountContact(); accountContact.AccountContactId = this.accountContactId; accountContact.FirstName = TextBoxFirstName.Text; accountContact.LastName = TextBoxLastName.Text; accountContact.ContactNumber = TextBoxContactNumber.Text; accountContact.Email = TextBoxEmail.Text; accountContact.Position = (TextBoxPosition.Text.Length == 0) ? "" : TextBoxPosition.Text; accountContact.ModifiedUser = Context.User.Identity.GetUserName(); try { accountContact.Save(); int accountContactId = accountContact.AccountContactId; if (this.accountId != 0) { AccountContactLink accountContactLink = new AccountContactLink(); accountContactLink.AccountContactId = accountContact.AccountContactId; accountContactLink.AccountId = this.accountId; accountContactLink.ModifiedUser = Context.User.Identity.GetUserName(); accountContactLink.Save(); BindAccountContactGridView(); } Button clickedButton = (Button)sender; switch (clickedButton.ID) { case "ButtonSave": Response.Redirect("AccountContactList.aspx"); break; case "ButtonSaveNew": Response.Redirect("AccountContactEdit.aspx"); break; case "ButtonSaveLink": Response.Redirect(String.Format("AccountContactEdit.aspx?AccountContactId={0}&AccountId={1}", 0, this.accountId)); break; } } catch (System.Data.SqlClient.SqlException sqlEx) { LabelError.Text = ""; for (int i = 0; i < sqlEx.Errors.Count; i++) { ErrorMessage.Text += (sqlEx.Errors[i].Message + "<br />"); } } } }
public void AssociateAccountToContact(List <AccountContactModel> accountcontactlist, int createdBy) { List <AccountContact> accountContactList = new List <AccountContact>(); foreach (var accountcontact in accountcontactlist) { AccountContact acccontact = new AccountContact(); acccontact.AccountId = accountcontact.AccountId; acccontact.ContactId = accountcontact.ContactId; acccontact.CreatedBy = createdBy; acccontact.CreatedDate = DateTime.UtcNow; accountContactList.Add(acccontact); } accountcontactRepository.InsertAll(accountContactList); }
public override Dictionary <string, string> DeleteCheck(Guid id) { AccountContact accountContact = context.AccountContacts.FirstOrDefault(i => i.Id == id); if (accountContact == null) { errors.Add("AccountContactNotFound", resManager.GetString("AccountContactNotFound")); } Account account = context.Accounts.FirstOrDefault(i => i.Id == accountContact.AccountId); if (account == null) { errors.Add("AccountContactNotFound", resManager.GetString("AccountContactNotFound")); } if (account.PrimaryContactId == accountContact.Id && account.AccountType == AccountType.Individual) { errors.Add("PrimaryIndividualContactIsReadonly", resManager.GetString("PrimaryIndividualContactIsReadonly")); } return(errors); }
private void BindAccountContactGridView() { GridViewResult.DataSource = AccountContact.GetAccountContactListByAccountId(this.accountId); GridViewResult.DataBind(); }
/// <remarks/> public System.IAsyncResult BeginmodifyAccountContact(AccountContact contact, System.AsyncCallback callback, object asyncState) { return(this.BeginInvoke("modifyAccountContact", new object[] { contact }, callback, asyncState)); }
public void modifyAccountContact(AccountContact contact) { this.Invoke("modifyAccountContact", new object[] { contact }); }
public void addAccountContact(AccountContact contact) { this.Invoke("addAccountContact", new object[] { contact }); }
public static string GetFullName(this AccountContact accountContact) => $"{accountContact.LastName} {accountContact.FirstName} {accountContact.MiddleName}";
public override Account OnModelCreate(AccountViewModel accountViewModel) { // Поля клиента и список контактов string name = string.Empty; string kpp = string.Empty; string okpo = string.Empty; string ogrn = string.Empty; Guid newAccountId = Guid.NewGuid(); Guid primaryContactId = Guid.Empty; List <AccountContact> accountContacts = new List <AccountContact>(); // В зависимости от типа клиента инициализация переменных разными значениями AccountType accountType = (AccountType)Enum.Parse(typeof(AccountType), accountViewModel.AccountType); switch (accountType) { // Физическое лицо case AccountType.Individual: name = accountViewModel.GetIndividualFullName(); AccountContact accountContact = GetNewAccountContact(accountViewModel, newAccountId); primaryContactId = accountContact.Id; accountContacts.Add(accountContact); context.AccountContacts.Add(accountContact); break; // ИП case AccountType.IndividualEntrepreneur: name = accountViewModel.Name; kpp = accountViewModel.KPP; break; // Юридическое лицо case AccountType.LegalEntity: name = accountViewModel.Name; kpp = accountViewModel.KPP; okpo = accountViewModel.OKPO; ogrn = accountViewModel.OGRN; break; } // Создание адреса - при любом типе клиента List <AccountAddress> accountAddresses = new List <AccountAddress>(); AccountAddress accountAddress = GetNewAccountAddress(accountViewModel, newAccountId); Guid legalAddressId = accountAddress.Id; accountAddresses.Add(accountAddress); context.AccountAddresses.Add(accountAddress); // Привязка существующего сотрудника организации как основного менеджера по клиенту и добавление его в список "accountManagers" List <AccountManager> accountManagers = new List <AccountManager>(); AccountManager accountManager = GetNewAccountManager(accountViewModel, newAccountId); Guid primaryManagerId = accountManager.Id; accountManagers.Add(accountManager); context.AccountManagers.Add(accountManager); return(new Account() { Id = newAccountId, Name = name, INN = accountViewModel.INN, KPP = kpp, OKPO = okpo, OGRN = ogrn, AccountStatus = AccountStatus.Active, AccountType = accountType, OrganizationId = currentUser.PrimaryOrganizationId, ParentAccountId = Guid.Empty, PrimaryContactId = primaryContactId, LegalAddressId = legalAddressId, PrimaryManagerId = primaryManagerId, AccountContacts = accountContacts, AccountAddresses = accountAddresses, AccountManagers = accountManagers }); }
public int AddContact(ContactModel contactModel) { Contact contact = new Contact(); AutoMapper.Mapper.Map(contactModel, contact); contact.CreatedDate = DateTime.UtcNow; contact.ModifiedBy = contactModel.ModifiedBy; contact.CreatedBy = contactModel.CreatedBy; contact.ModifiedDate = DateTime.UtcNow; contact.Address = null; contact.User = null; contact.Address = ValidateAddress(contact.Address, contactModel.AddressModel); if (contactModel.AccountId > 0) { AccountContact accountcontact = new AccountContact(); accountcontact.AccountId = contactModel.AccountId; accountcontact.CreatedBy = contactModel.CreatedBy; accountcontact.CreatedDate = DateTime.UtcNow; contact.AccountContacts.Add(accountcontact); } if (contactModel.LeadId > 0) { LeadContact leadcontact = new LeadContact(); leadcontact.LeadId = contactModel.LeadId.Value; leadcontact.CreatedBy = contactModel.CreatedBy; leadcontact.CreatedDate = DateTime.UtcNow; contact.LeadContacts.Add(leadcontact); } contactRepository.Insert(contact); List <int> lisTagIds = new List <int>(); if (!string.IsNullOrEmpty(contactModel.ContactTagIds)) { string[] arrTagIds = contactModel.ContactTagIds.Split(','); int tagId = 0; for (int i = 0; i < arrTagIds.Length; i++) { tagId = arrTagIds[i].Decrypt(); lisTagIds.Add(tagId); } } if (!string.IsNullOrEmpty(contactModel.NewTagNames)) { List <int> lisNewAddedTagIds = new List <int>(); lisNewAddedTagIds = AddTagsToSystem(contactModel.NewTagNames, contactModel.CompanyId, contactModel.CreatedBy); if (lisNewAddedTagIds.Count > 0) { lisTagIds = lisTagIds.Concat(lisNewAddedTagIds).ToList(); } } //Associate Tagids to contact if (lisTagIds.Count > 0) { ContactTag contactTag; for (int i = 0; i < lisTagIds.Count; i++) { contactTag = new ContactTag(); contactTag.ContactId = contact.ContactId; contactTag.TagId = lisTagIds[i]; contactTagRepository.Insert(contactTag); } } return(contact.ContactId); }
public ServiceResponse AddEditContact(UserModel userModel, int accountId) { currentLoginCompanyId = GetLoginUserCompanyId(); loginUserId = GetLoginUserId(); IdentityResult result = new IdentityResult(); var user = new User(); var existUser = _unitOfWork.userRespository.Get(m => m.Email == userModel.Email && m.Id != userModel.Id).FirstOrDefault(); if (userModel.Id > 0 && existUser == null) { user = _unitOfWork.userRespository.Get(c => c.Id == userModel.Id).FirstOrDefault(); var accountContactInfo = _unitOfWork.accountContactRespository.Get(c => c.UserId == userModel.Id).FirstOrDefault(); Mapper.Map(userModel, user); user.BusinessName = null; user.UpdatedBy = loginUserId; user.CompanyId = currentLoginCompanyId; if (accountContactInfo != null && accountContactInfo.AccountId != accountId) { var accountContact = new AccountContact() { AccountId = accountId }; user.AccountContact = new List <AccountContact> { accountContact }; } _unitOfWork.userRespository.Update(user); } else { var DeleteUser = UserManager.FindByEmail(userModel.Email); if (DeleteUser != null && existUser == null) { DeleteUser.IsDeleted = false; Mapper.Map(DeleteUser, user); Mapper.Map(userModel, user); user.UpdatedBy = loginUserId; user.CompanyId = currentLoginCompanyId; var accountContact = new AccountContact() { AccountId = accountId }; user.AccountContact = new List <AccountContact> { accountContact }; _unitOfWork.userRespository.Update(user); } else { if (existUser == null) { Mapper.Map(userModel, user); var accountContact = new AccountContact() { AccountId = accountId }; user.AccountContact = new List <AccountContact> { accountContact }; user.CreatedBy = loginUserId; user.CompanyId = currentLoginCompanyId; _unitOfWork.userRespository.Insert(user); } else { return(new ServiceResponse { Data = userModel, Message = "Sorry, it looks like <b>" + userModel.Email + " </b> belongs to an existing account", Success = false }); } } } _unitOfWork.Save(); Mapper.Map(user, userModel); return(new ServiceResponse() { Data = userModel, Message = "Success", Success = true }); }
public LeadModel UpdateLeadStage(LeadModel leadModel) { //LeadModel leadModel = new LeadModel(); int leadId, stageId, modifyBy; bool isClosedWin; leadId = leadModel.LeadId; stageId = (int)leadModel.StageId; isClosedWin = (bool)leadModel.IsClosedWin; modifyBy = (int)leadModel.ModifiedBy; RatingModel ratingModel = new RatingModel(); Stage stage = new Stage(); stage = stageRepository.SingleOrDefault(r => r.StageId == stageId && r.RecordDeleted == false); leadModel.LeadId = leadId; leadModel.StageId = stageId; int?ratingId = stage.DefaultRatingId; leadModel.RatingId = ratingId; ratingModel = ratingBusiness.GetRatingByRatingId((int)(leadModel.RatingId == null ? 0 : leadModel.RatingId)); bool?isLastStage = stage.IsLastStage == null ? false : stage.IsLastStage; leadModel = Update(leadModel, (bool)isLastStage); leadModel.Rating = ratingModel; if (isLastStage == true) { Lead lead = leadRepository.SingleOrDefault(r => r.LeadId == leadModel.LeadId); if (isClosedWin == true && lead.AccountId == null) {//Code for Converting lead to Account as the lead is closed with win status using (TransactionScope tscope = new TransactionScope(TransactionScopeOption.RequiresNew)) { int leadModuleId = Convert.ToInt32(Utility.Enums.Module.Lead); int accountModuleId = Convert.ToInt32(Utility.Enums.Module.Account); Account account = new Account(); account.AccountName = lead.LeadCompanyName ?? lead.Title; account.AccountOwnerId = lead.LeadOwnerId.Value; account.CompanyId = lead.CompanyId; accountRepository.Insert(account); account.CreatedBy = modifyBy; account.CreatedDate = DateTime.UtcNow; int accountId = account.AccountId; //Code to Create Sale order automatically just after creating new order SalesOrder saleaOrder = new SalesOrder(); saleaOrder.Subject = lead.Title; saleaOrder.AccountId = account.AccountId; saleaOrder.CompanyId = account.CompanyId; saleaOrder.OwnerId = account.CreatedBy; saleaOrder.OrderAmount = lead.Amount; saleaOrder.GrandTotal = lead.Amount; saleaOrder.CreatedBy = account.CreatedBy; saleaOrder.CreatedDate = DateTime.UtcNow; saleaOrder.ModifiedBy = account.ModifiedBy; saleaOrder.ModifiedDate = DateTime.UtcNow; salesOrderRepository.Insert(saleaOrder); //salesOrderRepository //code for saving leadcontact to account contact List <AccountContact> accountContactList = new List <AccountContact>(); AccountContact accountcontact = new AccountContact(); ICollection <LeadContact> leadContacts = new List <LeadContact>(); leadContacts = lead.LeadContacts; foreach (var leadcontact in leadContacts) { accountcontact.AccountId = accountId; accountcontact.ContactId = leadcontact.ContactId; accountcontact.CreatedDate = DateTime.UtcNow; accountcontact.CreatedBy = modifyBy; accountContactList.Add(accountcontact); } accountcontactRepository.InsertAll(accountContactList); //code for saving leadDocument TO accountDocument List <FileAttachment> fileAttacmentList = new List <FileAttachment>(); fileAttacmentList = fileAttachmentrepository.GetAll(r => r.LeadId == leadId).ToList(); foreach (FileAttachment file in fileAttacmentList) { file.AccountId = accountId; } fileAttachmentrepository.UpdateAll(fileAttacmentList); //Code for Converting LeadActivity to account Activity List <TaskItem> activityList = new List <TaskItem>(); activityList = taskItemRepository.GetAll(r => r.AssociatedModuleId == leadModuleId && r.AssociatedModuleValue == leadId).ToList(); List <TaskItem> listActivityToAdd = new List <TaskItem>(); foreach (TaskItem task in activityList) { TaskItem taskObj = new TaskItem(); taskObj.CompanyId = task.CompanyId; taskObj.AssociatedModuleId = accountModuleId; taskObj.AssociatedModuleValue = accountId; taskObj.Description = task.Description; taskObj.DueDate = task.DueDate; taskObj.EndDate = task.EndDate; taskObj.CreatedDate = task.CreatedDate; taskObj.CreatedBy = task.CreatedBy; taskObj.Subject = task.Subject; taskObj.Status = task.Status; taskObj.OwnerId = task.OwnerId; listActivityToAdd.Add(taskObj); } taskItemRepository.InsertAll(listActivityToAdd); //Associating Lead TO NewLy created account lead.AccountId = accountId; lead.ClosingDate = DateTime.UtcNow; lead.IsLeadConvertedToAccount = true; lead.RatingId = ratingId; lead.StageId = stageId; lead.ModifiedBy = modifyBy; lead.ModifiedDate = DateTime.UtcNow; lead.IsClosed = true; leadRepository.Update(lead); tscope.Complete(); } leadModel.Rating.Icons = CommonFunctions.GetRatingImage("", true, true); } else { leadModel.Rating.Icons = CommonFunctions.GetRatingImage("", true, false); lead.ClosingDate = DateTime.UtcNow; lead.IsLeadConvertedToAccount = false; lead.RatingId = ratingId; lead.StageId = stageId; lead.ModifiedBy = modifyBy; lead.ModifiedDate = DateTime.UtcNow; lead.LeadStatusId = (int?)Utility.Enums.LeadStatus.Lost; //5 is set for lost lead lead.IsClosed = true; leadRepository.Update(lead); } } return(leadModel); }
public async Task Add(AccountContact contact) { Contacts.Add(contact); await SaveChangesAsync(); }