コード例 #1
0
        public async Task <bool> DoSaveParticipantProduct(ParticipantProductDto participantProductDto)
        {
            var participantProduct = _mapper.Map(participantProductDto, new ParticipantProduct());

            participantProduct.CreatedAt = DateTime.Now;
            participantProduct.Activated = true;
            participantProduct.Product   = await _productRepository.GetById(participantProductDto.ProductId);

            participantProduct.Network = await _networkRepository.GetById(participantProductDto.NetworkId);

            _participantProductRepository.Save(participantProduct);

            return(await _unitOfWork.CommitAsync());
        }
コード例 #2
0
        public async Task <bool> DoSaveFocusProduct(FocusProductDto focusProductDto)
        {
            var focusProduct = _mapper.Map(focusProductDto, new FocusProduct());

            focusProduct.CreatedAt    = DateTime.Now;
            focusProduct.Activated    = true;
            focusProduct.GroupProduct = await _groupProductRepository.GetById(focusProductDto.GroupProductId);

            focusProduct.Product = await _productRepository.GetById(focusProductDto.ProductId);

            focusProduct.Network = await _networkRepository.GetById(focusProductDto.NetworkId);

            _focusProductRepository.Save(focusProduct);

            return(await _unitOfWork.CommitAsync());
        }
コード例 #3
0
        public int GetDegreesBetween(string id, string goalId)
        {
            if (id == goalId)
            {
                return(0);
            }

            var goalProgrammer = _programmers.GetById(goalId);

            _queue.Enqueue(new Node(id, 1));

            while (_queue.Count > 0)
            {
                var currentNode = _queue.Dequeue();

                _visited.Add(currentNode.Id);

                var currentProgrammer = _programmers.GetById(currentNode.Id);

                if (AreDirectlyRelated(currentProgrammer, goalProgrammer))
                {
                    return(currentNode.Depth);
                }

                var recommenders = currentProgrammer.GetRecommenders(_programmers.GetAll()).Select(p => p.GetId());
                var neighbours   = currentProgrammer
                                   .GetRecommendations()
                                   .Concat(recommenders);

                foreach (var neighbour in neighbours)
                {
                    if (!_visited.Contains(neighbour))
                    {
                        _queue.Enqueue(new Node(neighbour, currentNode.Depth + 1));
                    }
                }
            }

            return(0);
        }
コード例 #4
0
        public double GetRank(string programmerId)
        {
            const int settleLimit = 20;

            _networkRepository.GetById(programmerId);

            while (++_iteration < settleLimit)
            {
                foreach (var eachProgrammer in _programmers)
                {
                    eachProgrammer.Rank = NewRank(eachProgrammer);
                }
            }

            return(_programmers.Single(p => p.GetId() == programmerId).Rank);
        }
コード例 #5
0
        public async Task <IEnumerable <string> > SendSaleFile(FileStatusParamDto fileStatusParamDto, IFormFile formFile, int network, int user)
        {
            var extensions = Path.GetFileName(formFile.FileName).Split('.').Last().ToUpper();

            if (extensions == "XLS")
            {
                return new string[1] {
                           "favor importar arquivo com extensão .xlsx."
                }
            }
            ;

            if (extensions != "XLSX")
            {
                return new string[1] {
                           "favor importar arquivo com extensão .xlsx."
                }
            }
            ;

            if (await _saleFileRepository.ExistFile(fileStatusParamDto.CurrentMonth, fileStatusParamDto.CurrentYear, network))
            {
                return new string[1] {
                           "Existe um arquivo em fase de processamento ou ja foi processado"
                }
            }
            ;

            var fileName = $"{DateTime.Now.Year}" +
                           $"{DateTime.Now.Month.ToString().PadLeft(2, '0')}" +
                           $"{DateTime.Now.Day.ToString().PadLeft(2, '0')}" +
                           $"{DateTime.Now.Hour.ToString().PadLeft(2, '0')}" +
                           $"{DateTime.Now.Minute.ToString().PadLeft(2, '0')}" +
                           $"{DateTime.Now.Second.ToString().PadLeft(2, '0')}.{extensions}";

            var path = Path.Combine(_env.WebRootPath, $"Content/SpreadSheet/Sale/{Path.GetFileName(fileName)}");

            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (var stream = new FileStream(path, FileMode.Create))
            {
                await formFile.CopyToAsync(stream);
            }

            var spreadSheetMessages = new List <string>();
            var columnsToValidate   = new string[11] {
                "REVENDA", "COD LOJA", "CNPJ", "CPF VENDEDOR", "NOME VENDEDOR", "CATEGORIA", "DESCRIÇÃO PRODUTO", "QUANTIDADE", "DATA VENDA", "NÚMERO PEDIDO", "CÓDIGO EAN"
            };
            var fileInfo = new FileInfo(path);

            using (var excelPackage = new ExcelPackage(fileInfo))
            {
                var tab = excelPackage.Workbook.Worksheets[1];

                spreadSheetMessages = FileManipulator.ValidateSpreadsheet(tab, columnsToValidate);
            }

            if (spreadSheetMessages.Count == 0)
            {
                _saleFileRepository.Save(new SaleFile
                {
                    CreatedAt    = DateTime.Now,
                    CurrentMonth = fileStatusParamDto.CurrentMonth,
                    CurrentYear  = fileStatusParamDto.CurrentYear,
                    FileName     = fileName,
                    FileStatus   = await _fileStatusRepository.GetById((int)FileStatusEnum.Pending),
                    Network      = await _networkRepository.GetById(network),
                    User         = await _userRepository.GetById(user)
                });

                await _unitOfWork.CommitAsync();

                spreadSheetMessages.Add("Carga recebida com sucesso. Aguarde a validação dos seus dados.");
            }

            return(spreadSheetMessages);
        }
コード例 #6
0
 public IEnumerable <string> GetSkills(string programmerId)
 {
     return(_networkRepository.GetById(programmerId).GetSkills());
 }
コード例 #7
0
        public async Task <bool> DoProcessesSale()
        {
            if (DateTime.Now.Day == 10)
            {
                var saleFile = new SaleFile
                {
                    CreatedAt    = DateTime.Now,
                    CurrentMonth = DateTime.Now.AddMonths(-1).Month,
                    CurrentYear  = DateTime.Now.AddMonths(-1).Year,
                    FileName     = "",
                    FileStatus   = await _fileStatusRepository.GetById((int)FileStatusEnum.InProgress),
                    Network      = await _networkRepository.GetById((int)NetworkEnum.Havan),
                    User         = (await _userRepository.CustomFind(x => x.Cpf.Equals("rhuscaya"))).First()
                };

                var skuPendingClassification = await _saleFileSkuStatusRepository.GetAll();

                var products = await _productRepository.GetAll();

                _saleFileRepository.Save(saleFile);

                for (var i = 1; i <= DateTime.DaysInMonth(DateTime.Now.AddMonths(-1).Year, DateTime.Now.AddMonths(-1).Month); i++)
                {
                    using (var client = new HttpClient())
                    {
                        client.BaseAddress = new Uri("https://cliente.havan.com.br/ClubePontuacao/Api/");
                        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "5cb8d9a916c33a25efdf0dd1");
                        var result = await client.PostAsync("Venda/Lotes", new StringContent(JsonConvert.SerializeObject(new { inicio = new DateTime(DateTime.Now.AddMonths(-1).Year, DateTime.Now.AddMonths(-1).Month, i) }), Encoding.UTF8, "application/json"));

                        if (result.IsSuccessStatusCode && result.StatusCode == System.Net.HttpStatusCode.OK)
                        {
                            var json = await result.Content.ReadAsStringAsync();

                            var havanSaleIntegration = JsonConvert.DeserializeObject <HavanSaleIntegrationDto>(json);

                            foreach (var item in havanSaleIntegration.Lotes.First().Itens)
                            {
                                var productId    = 0;
                                var skuValidated = skuPendingClassification.Where(x => x.Id == (int)FileSKUStatusEnum.PendingClassification).First();

                                if (products.Where(x => x.Ean.Equals(item.Produto.Ean)).Any())
                                {
                                    skuValidated = skuPendingClassification.Where(x => x.Id == (int)FileSKUStatusEnum.AutomaticValidate).First();
                                    productId    = products.Where(x => x.Ean.Equals(item.Produto.Ean)).First().Id;
                                }

                                _saleFileDataRepository.Save(new SaleFileData
                                {
                                    SaleFile          = saleFile,
                                    SaleFileSkuStatus = skuValidated,
                                    Amount            = item.Venda.Quantidade,
                                    Cnpj               = item.Venda.CnpjLoja,
                                    CpfSalesman        = item.Vendedor.Cpf,
                                    CreatedAt          = DateTime.Now,
                                    NameSalesman       = item.Vendedor.Nome,
                                    Product            = productId,
                                    ProductDescription = item.Produto.Descricao,
                                    RequestNumber      = item.Venda.NumeroCupomNota.ToString(),
                                    SaleDate           = item.Venda.Data,
                                    Resale             = "Havan"
                                });
                            }
                        }
                        else
                        {
                            _logger.Fatal($"Atualização de hierarquia havan - ocorreu uma falha ao tentar acessar api de colaboradores da havan - {result.RequestMessage}");
                        }
                    }
                }

                return(await _unitOfWork.CommitAsync());
            }

            return(false);
        }
コード例 #8
0
 public async Task <Network> GetById(int id) => await _networkRepository.GetById(id);