Exemple #1
0
        public async Task <SaleManagementResult> AddErrorAsync(SaleManagementResult badResult)
        {
            SaleManagementResult result = new SaleManagementResult()
            {
                Succeeded = false,
                FileName  = badResult.FileName
            };

            try
            {
                unitOfWork.ErrorFiles.Add(new ErrorFile()
                {
                    FileName         = badResult.FileName,
                    ErrorDescription = badResult.ErrorMessage
                });
                int savedCount = await unitOfWork.SaveChangesAsync().ConfigureAwait(false);

                result.Succeeded    = savedCount > 0;
                result.ErrorMessage = savedCount > 0 ? "" : "Data is not saved";
            }
            catch (Exception e)
            {
                unitOfWork.DiscardChanges();
                result.ErrorMessage = e.GetLastInnerExceptionMessage();
            }

            return(result);
        }
Exemple #2
0
        protected IList <Sale> GetSalesAndSaveProductsAndCustomers(SourceFile sourceFile, IEnumerable <SaleDto> saleDetailsData)
        {
            List <Sale> sales    = new List <Sale>();
            var         mapper   = Mappings.GetMapper();
            bool        gotMutex = false;

            try
            {
                foreach (var saleDto in saleDetailsData)
                {
                    Sale sale = mapper.Map <SaleDto, Sale>(saleDto);
                    sale.SourceFile = sourceFile;
                    gotMutex        = customersAndProductsSaveMutex.WaitOne();
                    if (!gotMutex)
                    {
                        throw new ThreadInterruptedException("Could not get mutex.");
                    }
                    sale.Customer = unitOfWork.Customers.Add(sale.Customer);
                    sale.Product  = unitOfWork.Products.Add(sale.Product);
                    unitOfWork.SaveChanges();

                    customersAndProductsSaveMutex.ReleaseMutex();
                    gotMutex = false;
                    sales.Add(sale);
                }

                return(sales);
            }
            catch (Exception)
            {
                unitOfWork.DiscardChanges();
                return(new Sale[0]);
            }
            finally
            {
                if (gotMutex)
                {
                    customersAndProductsSaveMutex.ReleaseMutex();
                }
            }
        }