public async Task <BranchModel> AddBranch(BranchModel branchModel) { List <BranchAddress> branchAddresses = new List <BranchAddress>(); foreach (OtherBranchAddressModel addressModel in branchModel.AddressesList ?? new List <OtherBranchAddressModel>()) { branchAddresses.Add(new BranchAddress(addressModel.BranchAddressTypeId, addressModel.Position, addressModel.Address, addressModel.Phone, addressModel.Fax, addressModel.Phone2, addressModel.Fax2, addressModel.Email, addressModel.Description, addressModel.AddressName, addressModel.CityCode, addressModel.PostalCode, addressModel.ZipCode, true)); } var mainAddressModel = branchModel.MainBranchAddress; branchAddresses.Add(new BranchAddress((int)Enums.BranchAddressType.MainBranchAddress, mainAddressModel.Position, mainAddressModel.Address, mainAddressModel.Phone, mainAddressModel.Fax, mainAddressModel.Phone2, mainAddressModel.Fax2, mainAddressModel.Email, mainAddressModel.Description, mainAddressModel.AddressName, mainAddressModel.CityCode, mainAddressModel.PostalCode, mainAddressModel.ZipCode, true)); Branch branch; branchModel.CommittieeIds.AddRange(branchModel.techcommitteeIds); branchModel.CommittieeIds.AddRange(branchModel.checkcommitteeIds); branchModel.CommittieeIds.AddRange(branchModel.opencommitteeIds); branchModel.CommittieeIds.AddRange(branchModel.purchaseCommitteeIds); branchModel.CommittieeIds.AddRange(branchModel.preQualificationCommitteeIds); branchModel.CommittieeIds.AddRange(branchModel.vrocommitteeIds); if (string.IsNullOrEmpty(branchModel.BranchIdString)) { await _branchServiceDomain.CheckBranchExist(branchModel.BranchName, branchModel.AgencyCode); branch = new Branch(branchModel.AgencyCode, branchModel.BranchName, branchAddresses); await _branchServiceCommand.CreateBracnhAsync(branch); List <BranchCommittee> BranchCommittees = new List <BranchCommittee>(); BranchCommittee committee; foreach (var id in branchModel.CommittieeIds) { committee = new BranchCommittee(branch.BranchId, id); BranchCommittees.Add(committee); } branch.AddCommittees(BranchCommittees); await _branchServiceCommand.UpdateAsync(branch); return(await FindById(branch.BranchId)); } else { branch = await _branchServiceQueries.FindBranchById(Util.Decrypt(branchModel.BranchIdString)); branch.Update(branchModel.BranchName, branchAddresses); List <BranchCommittee> BranchCommittees = new List <BranchCommittee>(); BranchCommittee committee; foreach (var id in branchModel.CommittieeIds) { committee = new BranchCommittee(branch.BranchId, id); BranchCommittees.Add(committee); } branch.UpdateCommittees(BranchCommittees); await _branchServiceCommand.UpdateAsync(branch); return(await FindById(branch.BranchId)); } }