public cor_bid_and_tender BuildBidAndTenderDomianObject(cor_supplier supplier, purch_plpo lpo, int Requstingdpt, purch_prndetails model)
 {
     return(new cor_bid_and_tender
     {
         PurchaseReqNoteId = model.PurchaseReqNoteId,
         DescriptionOfRequest = lpo.Description,
         Location = lpo.Address,
         LPOnumber = lpo.LPONumber,
         ProposedAmount = 0,
         RequestDate = DateTime.Today,
         RequestingDepartment = Requstingdpt,
         SupplierName = supplier.Name,
         Suppliernumber = supplier.SupplierNumber,
         AmountApproved = lpo.Total,
         DecisionResult = (int)DecisionResult.Non_Applicable,
         PLPOId = lpo.PLPOId,
         SupplierId = supplier.SupplierId,
         Quantity = model.Quantity,
         Total = model.SubTotal,
         ApprovalStatusId = (int)ApprovalStatus.Awaiting,
         SupplierAddress = supplier.Address,
         ExpectedDeliveryDate = lpo.DeliveryDate,
         CompanyId = model.CompanyId,
         Comment = model.Comment
     });
 }
        public async Task <bool> UpdateSupplierAsync(cor_supplier model)
        {
            var supplier = await _dataContext.cor_supplier.FindAsync(model.SupplierId);

            _dataContext.Entry(supplier).CurrentValues.SetValues(model);
            return(await _dataContext.SaveChangesAsync() > 0);
        }
Beispiel #3
0
        private async Task <string> CreateUpdteSuppliersUser(cor_supplier request)
        {
            ApplicationUser User = new ApplicationUser();

            User = await _userManager.FindByIdAsync(request.UserId);

            if (User != null)
            {
                User.Email       = request.Email;
                User.UserName    = request.Email;
                User.PhoneNumber = request.PhoneNo;
                User.FullName    = request.Name;
                await _userManager.UpdateAsync(User);
            }
            else
            {
                User             = new ApplicationUser();
                User.Email       = request.Email;
                User.UserName    = request.Email;
                User.PhoneNumber = request.PhoneNo;
                User.FullName    = request.Name;
                await _userManager.CreateAsync(User, "Password@1");
                await SendMailToNewSuppliersAsync(User);
            }
            return(User.Id);
        }
        public async Task <bool> DeleteSupplierAsync(cor_supplier model)
        {
            var item = await _dataContext.cor_supplier.FindAsync(model.SupplierId);

            item.Deleted = true;
            _dataContext.Entry(item).CurrentValues.SetValues(model);
            return(await _dataContext.SaveChangesAsync() > 0);
        }
Beispiel #5
0
        private cor_approvaldetail BuildApprovalDetailObject(SupplierStaffApprovalCommand request, cor_supplier currentItem, int staffId)
        {
            var approvalDeatil = new cor_approvaldetail();
            var previousDetail = _detailService.GetApprovalDetailsAsync(request.TargetId, currentItem.WorkflowToken).Result;

            approvalDeatil.ArrivalDate = currentItem.CreatedOn ?? DateTime.Now;

            if (previousDetail.Count() > 0)
            {
                approvalDeatil.ArrivalDate = previousDetail.OrderByDescending(s => s.ApprovalDetailId).FirstOrDefault().Date;
            }

            approvalDeatil.Comment         = request.ApprovalComment;
            approvalDeatil.Date            = DateTime.Today;
            approvalDeatil.StatusId        = request.ApprovalStatus;
            approvalDeatil.TargetId        = request.TargetId;
            approvalDeatil.StaffId         = staffId;
            approvalDeatil.WorkflowToken   = currentItem.WorkflowToken;
            approvalDeatil.ReferredStaffId = request.ReferredStaffId;
            return(approvalDeatil);
        }
Beispiel #6
0
            public async Task <FileUploadRespObj> Handle(UploadSupplierInformationCommand request, CancellationToken cancellationToken)
            {
                try
                {
                    var apiResponse = new FileUploadRespObj {
                        Status = new APIResponseStatus {
                            IsSuccessful = false, Message = new APIResponseMessage()
                        }
                    };

                    var files = _accessor.HttpContext.Request.Form.Files;

                    var byteList = new List <byte[]>();
                    foreach (var fileBit in files)
                    {
                        if (fileBit.Length > 0)
                        {
                            using (var ms = new MemoryStream())
                            {
                                await fileBit.CopyToAsync(ms);

                                byteList.Add(ms.ToArray());
                            }
                        }
                    }

                    var userId = _accessor.HttpContext.User?.FindFirst(x => x.Type == "userId").Value;

                    var uploadedRecord = new List <SupplierObj>();
                    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

                    if (byteList.Count() > 0)
                    {
                        foreach (var byteItem in byteList)
                        {
                            using (MemoryStream stream = new MemoryStream(byteItem))
                                using (ExcelPackage excelPackage = new ExcelPackage(stream))
                                {
                                    ExcelWorksheet workSheet    = excelPackage.Workbook.Worksheets[0];
                                    int            totalRows    = workSheet.Dimension.Rows;
                                    int            totalColumns = workSheet.Dimension.Columns;

                                    if (totalColumns != 14)
                                    {
                                        apiResponse.Status.Message.FriendlyMessage = "14 Columns Expected";
                                        return(apiResponse);
                                    }
                                    var item = new SupplierObj();
                                    for (int i = 2; i <= totalRows; i++)
                                    {
                                        item.ExcelLineNumber  = i;
                                        item.SupplierTypeName = workSheet.Cells[i, 1]?.Value != null ? workSheet.Cells[i, 1]?.Value.ToString() : string.Empty;
                                        item.Name             = workSheet.Cells[i, 2]?.Value != null ? workSheet.Cells[i, 2]?.Value.ToString() : string.Empty;
                                        item.Address          = workSheet.Cells[i, 3]?.Value != null ? workSheet.Cells[i, 3]?.Value.ToString() : string.Empty;
                                        item.PhoneNo          = workSheet.Cells[i, 4]?.Value != null ? workSheet.Cells[i, 4]?.Value.ToString() : string.Empty;
                                        item.Email            = workSheet.Cells[i, 5]?.Value != null ? workSheet.Cells[i, 5]?.Value.ToString() : string.Empty;
                                        item.RegistrationNo   = workSheet.Cells[i, 6]?.Value != null ? workSheet.Cells[i, 6]?.Value.ToString() : string.Empty;
                                        item.SupplierNumber   = workSheet.Cells[i, 7]?.Value != null ? workSheet.Cells[i, 7]?.Value.ToString() : string.Empty;
                                        item.CountryName      = workSheet.Cells[i, 8]?.Value != null ? workSheet.Cells[i, 8]?.Value.ToString() : string.Empty;
                                        item.StatusName       = workSheet.Cells[i, 9]?.Value != null ? workSheet.Cells[i, 9]?.Value.ToString() : string.Empty;
                                        item.Website          = workSheet.Cells[i, 10]?.Value != null ? workSheet.Cells[i, 10]?.Value.ToString() : string.Empty;
                                        item.PostalAddress    = workSheet.Cells[i, 11]?.Value != null ? workSheet.Cells[i, 11]?.Value.ToString() : string.Empty;
                                        item.TaxIDorVATID     = workSheet.Cells[i, 12]?.Value != null ? workSheet.Cells[i, 12]?.Value.ToString() : string.Empty;
                                        item.WorkPermitName   = workSheet.Cells[i, 13]?.Value != null ? workSheet.Cells[i, 13]?.Value.ToString() : string.Empty;
                                        item.ParticularsName  = workSheet.Cells[i, 14]?.Value != null ? workSheet.Cells[i, 14]?.Value.ToString() : string.Empty;

                                        uploadedRecord.Add(item);
                                    }
                                }
                        }
                    }
                    var ItemList = await _repo.GetAllSupplierAsync();

                    var _SupplierType = await _repo.GetAllSupplierTypeAsync();

                    var _country = await _serverRequest.GetAllCountryAsync();

                    cor_supplier itemFrmRepo = new cor_supplier();
                    if (uploadedRecord.Count > 0)
                    {
                        foreach (var item in uploadedRecord)
                        {
                            if (string.IsNullOrEmpty(item.Name))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty Supplier name detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                if (item.Name.Split(" ").Length == 1)
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Invalid Supplier name detected on line {item.ExcelLineNumber}";
                                    return(apiResponse);
                                }
                            }
                            itemFrmRepo = ItemList.FirstOrDefault(c => c.Name.ToLower().Trim() == item.Name.ToLower().Trim());
                            if (string.IsNullOrEmpty(item.SupplierTypeName))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty Supplier type detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                var type = _SupplierType.FirstOrDefault(w => w.SupplierTypeName.Trim().ToLower() == item.SupplierTypeName.Trim().ToLower());
                                if (type == null)
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Undentified Supplier type detected on line {item.ExcelLineNumber}";
                                    return(apiResponse);
                                }
                                item.SupplierTypeId = type.SupplierTypeId;
                            }
                            if (string.IsNullOrEmpty(item.Email))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Email Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                try
                                {
                                    MailAddress m = new MailAddress(item.Email);
                                }
                                catch (FormatException)
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Invalid Email Detected on line {item.ExcelLineNumber}";
                                    return(apiResponse);
                                }
                                var userEmailExist = _userManager.Users?.Where(w => w.Email.Trim().ToLower() == item.Email.Trim()).ToList();
                                if (userEmailExist.Count() > 1)
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Duplicate Supplier Email Detected on line {item.ExcelLineNumber}";
                                    return(apiResponse);
                                }
                            }

                            if (string.IsNullOrEmpty(item.Address))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Address Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            if (string.IsNullOrEmpty(item.RegistrationNo))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Reg No Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            if (string.IsNullOrEmpty(item.StatusName))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Status name Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                if (!Enum.IsDefined(typeof(ApprovalStatus), item.StatusName))
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Invalid Status Detected on line {item.ExcelLineNumber}";
                                    return(apiResponse);
                                }
                            }
                            if (string.IsNullOrEmpty(item.SupplierNumber) && item.StatusName.Trim().ToLower() != "pending")
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Status field of a Supplier without Supplier Number should be pending Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            if (!string.IsNullOrEmpty(item.SupplierNumber) && item.StatusName.Trim().ToLower() == "pending")
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Status field of a Supplier with Supplier Number should not be pending Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            if (!string.IsNullOrEmpty(item.SupplierNumber))
                            {
                                var supNumExist = await _repo.GetAllSupplierAsync();

                                if (supNumExist.Count() > 0)
                                {
                                    if (supNumExist?.Where(q => q.SupplierNumber.Trim().ToLower() == item.SupplierNumber.Trim().ToLower()).Count() > 1)
                                    {
                                        apiResponse.Status.Message.FriendlyMessage = $"Supplier with same supplier number already exist Detected on line {item.ExcelLineNumber}";
                                        return(apiResponse);
                                    }
                                }
                            }

                            if (string.IsNullOrEmpty(item.Address))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Email Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            if (string.IsNullOrEmpty(item.PhoneNo))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on PhoneNo Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }

                            if (string.IsNullOrEmpty(item.Website))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Wwebsite Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            if (string.IsNullOrEmpty(item.PostalAddress))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on PostalAddress Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            if (string.IsNullOrEmpty(item.TaxIDorVATID))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Tax Vat Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            if (string.IsNullOrEmpty(item.WorkPermitName))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Work permit  Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                item.HaveWorkPrintPermit = item.WorkPermitName.Trim().ToLower() == "Yes".Trim().ToLower() ? true : false;
                            }
                            if (string.IsNullOrEmpty(item.ParticularsName))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Particulars Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                item.Particulars = item.ParticularsName.Trim().ToLower() == "Corporate".ToLower().Trim() ? 2 : 1;
                            }
                            if (string.IsNullOrEmpty(item.CountryName))
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Empty cell on Country Column Detected on line {item.ExcelLineNumber}";
                                return(apiResponse);
                            }
                            else
                            {
                                var country = _country.commonLookups.FirstOrDefault(w => w.LookupName.Trim().ToLower() == item.CountryName.Trim().ToLower());
                                if (country == null)
                                {
                                    apiResponse.Status.Message.FriendlyMessage = $"Undentified Country name Detected on line {item.ExcelLineNumber}";
                                    return(apiResponse);
                                }
                                item.CountryId = country.LookupId;
                            }
                            if (itemFrmRepo != null)
                            {
                                itemFrmRepo.Address             = item.Address;
                                itemFrmRepo.SupplierTypeId      = item.SupplierTypeId;
                                itemFrmRepo.Name                = item.Name;
                                itemFrmRepo.Email               = item.Email;
                                itemFrmRepo.PhoneNo             = item.PhoneNo;
                                itemFrmRepo.RegistrationNo      = item.RegistrationNo;
                                itemFrmRepo.CountryId           = itemFrmRepo.CountryId;
                                itemFrmRepo.UpdatedOn           = DateTime.Now;
                                itemFrmRepo.Website             = item.Website;
                                itemFrmRepo.PostalAddress       = item.PostalAddress;
                                itemFrmRepo.TaxIDorVATID        = item.TaxIDorVATID;
                                itemFrmRepo.SupplierNumber      = itemFrmRepo.SupplierNumber;
                                itemFrmRepo.SupplierId          = itemFrmRepo.SupplierId;
                                itemFrmRepo.HaveWorkPrintPermit = item.HaveWorkPrintPermit;
                                itemFrmRepo.Active              = true;
                                itemFrmRepo.ApprovalStatusId    = item.ApprovalStatusId;
                                await _repo.UpdateSupplierAsync(itemFrmRepo);
                            }
                            else
                            {
                                var newItem = new cor_supplier
                                {
                                    Name                = item.Name,
                                    Address             = item.Address,
                                    PhoneNo             = item.PhoneNo,
                                    Email               = item.Email,
                                    RegistrationNo      = item.RegistrationNo,
                                    SupplierTypeId      = item.SupplierTypeId,
                                    Passport            = item.Passport,
                                    CountryId           = item.CountryId,
                                    ApprovalStatusId    = (int)ApprovalStatus.Pending,
                                    Active              = true,
                                    Deleted             = false,
                                    CreatedBy           = item.CreatedBy,
                                    CreatedOn           = DateTime.Now,
                                    UpdatedBy           = item.CreatedBy,
                                    UpdatedOn           = DateTime.Now,
                                    Website             = item.Website,
                                    PostalAddress       = item.PostalAddress,
                                    TaxIDorVATID        = item.TaxIDorVATID,
                                    SupplierNumber      = item.SupplierNumber,
                                    HaveWorkPrintPermit = item.HaveWorkPrintPermit,
                                    Particulars         = item.Particulars,
                                };
                                await _repo.AddNewSupplierAsync(newItem);
                            }
                        }
                    }
                    apiResponse.Status.IsSuccessful            = true;
                    apiResponse.Status.Message.FriendlyMessage = "Successful";
                    return(apiResponse);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        public async Task <bool> AddNewSupplierAsync(cor_supplier model)
        {
            await _dataContext.cor_supplier.AddAsync(model);

            return(await _dataContext.SaveChangesAsync() > 0);
        }
        public async Task <bool> UploadSupplierListAsync(byte[] record, string createdBy)
        {
            try
            {
                var updated        = 0;
                var uploadedRecord = new List <cor_supplier>();
                using (MemoryStream stream = new MemoryStream(record))

                    using (ExcelPackage excelPackage = new ExcelPackage(stream))
                    {
                        //Use first sheet by default
                        ExcelWorksheet workSheet = excelPackage.Workbook.Worksheets[1];
                        int            totalRows = workSheet.Dimension.Rows;
                        //First row is considered as the header
                        for (int i = 2; i <= totalRows; i++)
                        {
                            uploadedRecord.Add(new cor_supplier
                            {
                                Name = workSheet.Cells[i, 1].Value.ToString(),
                                //SupplierTypeId = SupplierTypeBySupplierTypeName(workSheet.Cells[i, 2].Value.ToString()),
                                Address       = workSheet.Cells[i, 3].Value.ToString(),
                                Email         = workSheet.Cells[i, 2].Value.ToString(),
                                PostalAddress = workSheet.Cells[i, 3].Value.ToString(),
                                //CountryId = CountryIdByCountryName(workSheet.Cells[i, 2].Value.ToString()),
                                PhoneNo        = workSheet.Cells[i, 1].Value.ToString(),
                                RegistrationNo = workSheet.Cells[i, 1].Value.ToString(),
                                Active         = true,
                                Deleted        = false,
                                CreatedBy      = createdBy,
                                CreatedOn      = DateTime.Now,
                                UpdatedBy      = createdBy,
                                UpdatedOn      = DateTime.Now,
                            });
                        }
                    }
                if (uploadedRecord.Count > 0)
                {
                    foreach (var item in uploadedRecord)
                    {
                        var supplierFrmDB = await _dataContext.cor_supplier.FirstOrDefaultAsync(x => (
                                                                                                    x.Name.Trim().ToLower() == item.Name.Trim().ToLower() ||
                                                                                                    x.SupplierNumber.Trim().ToLower() == item.Name.Trim().ToLower() ||
                                                                                                    x.Email.ToLower().Trim() == item.Email.ToLower().Trim()) && x.Deleted == false);

                        if (supplierFrmDB != null)
                        {
                            supplierFrmDB.SupplierNumber            = item.SupplierNumber;
                            supplierFrmDB.Name                      = item.Name;
                            supplierFrmDB.TaxIDorVATID              = item.TaxIDorVATID;
                            supplierFrmDB.RegistrationNo            = item.RegistrationNo;
                            supplierFrmDB.PostalAddress             = item.PostalAddress;
                            supplierFrmDB.Address                   = item.Address;
                            supplierFrmDB.PhoneNo                   = item.PhoneNo;
                            supplierFrmDB.Email                     = item.Email;
                            supplierFrmDB.CountryId                 = item.CountryId;
                            supplierFrmDB.Active                    = true;
                            supplierFrmDB.Deleted                   = false;
                            supplierFrmDB.CreatedBy                 = createdBy;
                            supplierFrmDB.CreatedOn                 = DateTime.Now;
                            supplierFrmDB.UpdatedBy                 = createdBy;
                            supplierFrmDB.UpdatedOn                 = DateTime.Now;
                            _dataContext.Entry(supplierFrmDB).State = EntityState.Modified;
                        }
                        else
                        {
                            var newSupplier = new cor_supplier
                            {
                                SupplierNumber = item.SupplierNumber,
                                Name           = item.Name,
                                TaxIDorVATID   = item.TaxIDorVATID,
                                RegistrationNo = item.RegistrationNo,
                                PostalAddress  = item.PostalAddress,
                                Address        = item.Address,
                                PhoneNo        = item.PhoneNo,
                                Email          = item.Email,
                                CountryId      = item.CountryId,
                                Active         = true,
                                Deleted        = false,
                                CreatedBy      = createdBy,
                                CreatedOn      = DateTime.Now,
                                UpdatedBy      = createdBy,
                                UpdatedOn      = DateTime.Now,
                            };
                            _dataContext.cor_supplier.Add(newSupplier);
                        }
                    }

                    updated = await _dataContext.SaveChangesAsync();
                }
                return(updated > 0);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Beispiel #9
0
        public async Task <SupplierRegRespObj> Handle(UpdateSupplierCommand request, CancellationToken cancellationToken)
        {
            var apiResponse = new SupplierRegRespObj {
                Status = new APIResponseStatus {
                    IsSuccessful = false, Message = new APIResponseMessage()
                }
            };

            try
            {
                ApplicationUser supplierUserAccount = new ApplicationUser();
                var             user = await _serverRequest.UserDataAsync();

                if (user.StaffId < 1)
                {
                    supplierUserAccount = await _userManager?.FindByEmailAsync(request.Email.Trim());
                }
                cor_supplier supp = new cor_supplier();
                if (user.StaffId < 1)
                {
                    if (request.SupplierId > 0)
                    {
                        supp = await BuildExistingSupplierObj(request);

                        await _supplierRepo.UpdateSupplierAsync(supp);

                        await CreateUpdteSuppliersUser(supp);
                    }
                    else
                    {
                        supp = BuildNewSupplierObj(request);
                        await _supplierRepo.AddNewSupplierAsync(supp);
                    }
                    apiResponse.SupplierId                     = supp.SupplierId;
                    apiResponse.Status.IsSuccessful            = true;
                    apiResponse.Status.Message.FriendlyMessage = "Successful";
                    return(apiResponse);
                }

                using (var transaction = await _dataContext.Database.BeginTransactionAsync())
                {
                    try
                    {
                        if (request.SupplierId > 0)
                        {
                            supp = await BuildExistingSupplierObj(request);

                            try
                            {
                                var id = await CreateUpdteSuppliersUser(supp);

                                supp.UserId = id;
                            }
                            catch (Exception ex)
                            {
                                await transaction.RollbackAsync();

                                apiResponse.Status.Message.FriendlyMessage = ex.Message;
                                return(apiResponse);
                            }
                            await _supplierRepo.UpdateSupplierAsync(supp);

                            await transaction.CommitAsync();

                            apiResponse.SupplierId                     = supp.SupplierId;
                            apiResponse.Status.IsSuccessful            = true;
                            apiResponse.Status.Message.FriendlyMessage = "Successful";
                            return(apiResponse);
                        }
                        else
                        {
                            if (supplierUserAccount.Email != null && request.SupplierId < 1)
                            {
                                apiResponse.Status.Message.FriendlyMessage = $"Supplier with this email {request.Email} already exist";
                                return(apiResponse);
                            }

                            var newSupplier = BuildNewSupplierObj(request);

                            var id = await CreateUpdteSuppliersUser(newSupplier);

                            newSupplier.UserId = id;
                            await _supplierRepo.AddNewSupplierAsync(newSupplier);

                            await transaction.CommitAsync();

                            apiResponse.SupplierId                     = newSupplier.SupplierId;
                            apiResponse.Status.IsSuccessful            = true;
                            apiResponse.Status.Message.FriendlyMessage = "Supplier Details Saved";
                            return(apiResponse);
                        }
                    }
                    catch (Exception ex)
                    {
                        await transaction.RollbackAsync();

                        apiResponse.Status.Message.FriendlyMessage = ex.Message;
                        return(apiResponse);
                    }
                }
            }
            catch (Exception ex)
            {
                #region Log error to file
                var errorCode = ErrorID.Generate(4);
                _logger.Error($"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}");
                return(new SupplierRegRespObj
                {
                    Status = new APIResponseStatus
                    {
                        Message = new APIResponseMessage
                        {
                            FriendlyMessage = "Error occured!! Please try again later",
                            MessageId = errorCode,
                            TechnicalMessage = $"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}"
                        }
                    }
                });

                #endregion
            }
        }