public async Task <SupplierSetRes> SetSupplierProduct(SupplierSetReq request)
        {
            SupplierSetRes response = new SupplierSetRes();

            try
            {
                var company = _MongoContext.mCompanies.AsQueryable().Where(x => x.Company_Id == request.Company_Id).FirstOrDefault();
                if (company != null && request.Product != null)
                {
                    var product = company.Products.Where(x => x.ProductSupplier_Id == request.ProductSupplier_Id).FirstOrDefault();
                    if (product != null)
                    {
                        if (request.Product.SalesAgent != null && request.Product.SalesAgent.Count > 0 && request.IsAddSalesAgent)
                        {
                            ProductSupplierSalesAgent newAgent = new ProductSupplierSalesAgent();
                            newAgent.ProductSupplierSalesAgent_Id = Guid.NewGuid().ToString();
                            newAgent.Company_Id   = request.Product.SalesAgent[0].Company_Id;
                            newAgent.Company_Code = request.Product.SalesAgent[0].Company_Code;
                            newAgent.Company_Name = request.Product.SalesAgent[0].Company_Name;
                            product.EditUser      = request.EditUser;
                            product.EditDate      = DateTime.Now;
                            product.SalesAgent.Add(newAgent);
                            response.SalesAgentId = newAgent.ProductSupplierSalesAgent_Id;
                        }
                        else if (request.IsRemoveSalesAgent && !string.IsNullOrEmpty(request.ProductSupplierSalesAgent_Id))
                        {
                            product.SalesAgent.RemoveAll(x => x.ProductSupplierSalesAgent_Id == request.ProductSupplierSalesAgent_Id);
                            product.EditUser      = request.EditUser;
                            product.EditDate      = DateTime.Now;
                            response.SalesAgentId = request.ProductSupplierSalesAgent_Id;
                        }
                        else if (request.IsProduct)
                        {
                            string salesEmail = string.Empty, salesName = string.Empty, fitEmail = string.Empty, fitName = string.Empty, groupEmail = string.Empty, groupName = string.Empty, financeEmail = string.Empty, financeName = string.Empty, emergencyEmail = string.Empty, emergencyName = string.Empty, complaintEmail = string.Empty, complaintName = string.Empty;

                            var currencyname   = _MongoContext.mCurrency.AsQueryable().Where(x => x.VoyagerCurrency_Id == request.Product.CurrencyId).Select(x => x.Name).FirstOrDefault();
                            var contactdetails = company.ContactDetails.ToList();
                            if (contactdetails != null && contactdetails.Count > 0)
                            {
                                salesName      = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Sales_Id).Select(x => x.FIRSTNAME + " " + x.LastNAME).FirstOrDefault();
                                salesEmail     = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Sales_Id).Select(x => x.MAIL).FirstOrDefault();
                                fitName        = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_FIT_Id).Select(x => x.FIRSTNAME + " " + x.LastNAME).FirstOrDefault();
                                fitEmail       = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_FIT_Id).Select(x => x.MAIL).FirstOrDefault();
                                groupName      = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Group_Id).Select(x => x.FIRSTNAME + " " + x.LastNAME).FirstOrDefault();
                                groupEmail     = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Group_Id).Select(x => x.MAIL).FirstOrDefault();
                                financeName    = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Finance_Id).Select(x => x.FIRSTNAME + " " + x.LastNAME).FirstOrDefault();
                                financeEmail   = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Finance_Id).Select(x => x.MAIL).FirstOrDefault();
                                emergencyName  = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Emergency_Id).Select(x => x.FIRSTNAME + " " + x.LastNAME).FirstOrDefault();
                                emergencyEmail = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Emergency_Id).Select(x => x.MAIL).FirstOrDefault();
                                complaintName  = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Complaints_Id).Select(x => x.FIRSTNAME + " " + x.LastNAME).FirstOrDefault();
                                complaintEmail = contactdetails.Where(x => x.Contact_Id == request.Product.Contact_Complaints_Id).Select(x => x.MAIL).FirstOrDefault();
                            }

                            product.SupplierStatus           = request.Product.SupplierStatus;
                            product.CurrencyId               = request.Product.CurrencyId;
                            product.CurrencyName             = currencyname;
                            product.ActiveFrom               = request.Product.ActiveFrom;
                            product.ActiveTo                 = request.Product.ActiveTo;
                            product.IsPreferred              = request.Product.IsPreferred;
                            product.IsDefault                = request.Product.IsDefault;
                            product.Contact_Sales_Id         = request.Product.Contact_Sales_Id;
                            product.Contact_Sales_Name       = salesName;
                            product.Contact_Sales_Email      = salesEmail;
                            product.Contact_FIT_Id           = request.Product.Contact_FIT_Id;
                            product.Contact_FIT_Name         = fitName;
                            product.Contact_FIT_Email        = fitEmail;
                            product.Contact_Group_Id         = request.Product.Contact_Group_Id;
                            product.Contact_Group_Name       = groupName;
                            product.Contact_Group_Email      = groupEmail;
                            product.Contact_Finance_Id       = request.Product.Contact_Finance_Id;
                            product.Contact_Finance_Name     = financeName;
                            product.Contact_Finance_Email    = financeEmail;
                            product.Contact_Emergency_Id     = request.Product.Contact_Emergency_Id;
                            product.Contact_Emergency_Name   = emergencyName;
                            product.Contact_Emergency_Email  = emergencyEmail;
                            product.Contact_Complaints_Id    = request.Product.Contact_Complaints_Id;
                            product.Contact_Complaints_Name  = complaintName;
                            product.Contact_Complaints_Email = complaintEmail;
                            product.EditUser                 = request.EditUser;
                            product.EditDate                 = DateTime.Now;

                            if (request.Product.IsDefault == false)
                            {
                                product.OperatingMarket.RemoveAll(x => x.ProductSupplierOperatingMkt_Id != null);
                                foreach (var a in request.Product.OperatingMarket)
                                {
                                    ProductSupplierOperatingMarket op = new ProductSupplierOperatingMarket();
                                    op.ProductSupplierOperatingMkt_Id = Guid.NewGuid().ToString();
                                    op.BusinessRegion_Id = a.BusinessRegion_Id;
                                    op.BusinessRegion    = a.BusinessRegion;
                                    product.OperatingMarket.Add(op);
                                }

                                product.SalesMarket.RemoveAll(x => x.ProductSupplierSalesMkt_Id != null);
                                foreach (var a in request.Product.SalesMarket)
                                {
                                    ProductSupplierSalesMarket sm = new ProductSupplierSalesMarket();
                                    sm.ProductSupplierSalesMkt_Id = Guid.NewGuid().ToString();
                                    sm.BusinessRegion_Id          = a.BusinessRegion_Id;
                                    sm.BusinessRegion             = a.BusinessRegion;
                                    product.SalesMarket.Add(sm);
                                }
                            }
                            else
                            {
                                product.OperatingMarket = new List <ProductSupplierOperatingMarket>();
                                product.SalesMarket     = new List <ProductSupplierSalesMarket>();
                                product.SalesAgent      = new List <ProductSupplierSalesAgent>();
                            }
                        }
                    }

                    await _MongoContext.mCompanies.UpdateOneAsync(Builders <mCompanies> .Filter.Eq("Company_Id", company.Company_Id),
                                                                  Builders <mCompanies> .Update.Set("Products", company.Products)
                                                                  .Set("EditUser", request.EditUser).Set("EditDate", DateTime.Now));
                }
                else
                {
                    response.ResponseStatus.Status       = "Failure";
                    response.ResponseStatus.ErrorMessage = "No company found";
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                response.ResponseStatus.Status       = "Failure";
                response.ResponseStatus.ErrorMessage = ex.Message;
            }
            return(response);
        }
        public IActionResult SaveProductSalesAgent(Branches model)
        {
            var status = "";

            request = new AgentGetReq()
            {
                CompanyId = model.ParentCompanyId
            };
            AgentGetRes response = agentProviders.GetAgentDetailedInfo(request, token).Result;
            var         msg = ""; var name = "";

            if (!string.IsNullOrEmpty(model.BranchCompanyName))
            {
                name = model.BranchCompanyName;
                if (response.AgentDetails.Products != null && (model.BranchCompanyId != response.AgentDetails.Company_Id))
                {
                    var product     = response.AgentDetails.Products.Where(x => x.ProductSupplier_Id == model.ProductSupplierId).FirstOrDefault();
                    var IsDuplicate = product.SalesAgent.Where(x => x.Company_Name == name).Select(x => x.Company_Name).FirstOrDefault();
                    if (!string.IsNullOrEmpty(IsDuplicate))
                    {
                        status = "error";
                        msg    = "Duplicate record. Cannot insert as " + IsDuplicate + " is already exists. Please select another agent.";
                    }
                    else
                    {
                        SupplierSetReq req = new SupplierSetReq();
                        req.Company_Id         = model.ParentCompanyId;
                        req.ProductSupplier_Id = model.ProductSupplierId;
                        req.EditUser           = ckUserEmailId;
                        req.IsAddSalesAgent    = true;
                        ProductSupplierSalesAgent newAgent = new ProductSupplierSalesAgent()
                        {
                            Company_Id   = model.BranchCompanyId,
                            Company_Code = model.BranchCompanyCode,
                            Company_Name = model.BranchCompanyName
                        };
                        req.Product.SalesAgent.Add(newAgent);
                        SupplierSetRes res          = supplierProviders.SetSupplierProduct(req, token).Result;
                        var            salesAgentId = res.SalesAgentId;

                        //Call Bridge service to save Contact data in SQL databse
                        ResponseStatus result = new ResponseStatus();
                        if (res.ResponseStatus != null)
                        {
                            if (res.ResponseStatus.Status.ToLower() == "success")
                            {
                                SetProductSalesAgent_RQ request = new SetProductSalesAgent_RQ();
                                request.ProductSupplier_Id           = model.ProductSupplierId;
                                request.ProductSupplierSalesAgent_Id = salesAgentId;
                                request.User = ckUserEmailId;
                                result       = supplierProviders.SetCompany_ProductSalesAgent(request, token).Result;

                                status = result.Status;
                                msg    = res.ResponseStatus.ErrorMessage + " " + result.StatusMessage;
                            }
                            else
                            {
                                status = "failure";
                                msg    = res.ResponseStatus.ErrorMessage;
                            }
                        }
                    }
                }
                else
                {
                    status = "error";
                    msg    = "Cannot insert existing company name";
                }
            }
            else
            {
                status = "error";
                msg    = "Please Select Agent Name";
            }
            return(Json(new { status = status, responseText = msg }));
            //return View();
        }