Esempio n. 1
0
        public async Task <IActionResult> UpsertAsync(LeadForDetailsDto dto)
        {
            var claimsIdentity = this.User.Identity as ClaimsIdentity;
            var userId         = claimsIdentity.Claims.ToList().FirstOrDefault(x => x.Type == "id").Value;
            var companyId      = claimsIdentity.Claims.ToList().FirstOrDefault(x => x.Type == "companyId").Value;

            var command = new UpsertLeadCommand
            {
                UserId        = userId,
                CompanyId     = Convert.ToInt32(companyId),
                LeadCreateDto = dto
            };

            return(await _mediator.Send(command));
        }
Esempio n. 2
0
        public async Task <IActionResult> Handle(GetLeadQuery request, CancellationToken cancellationToken)
        {
            try
            {
                var traders = await _userRepository.GetCompanyTraders(request.CompanyId);

                var user            = traders.FirstOrDefault(x => x.Id == request.UserId);
                var responseTraders = new List <string>();

                foreach (var trader in traders)
                {
                    responseTraders.Add(trader.FirstName + " " + trader.LastName);
                }

                if (request.Id == 0)
                {
                    return(new JsonResult(new ApiResponse <LeadDetailsDto>
                    {
                        Code = 200,
                        ErrorMessage = "",
                        Data = new LeadDetailsDto
                        {
                            Lead = new LeadForDetailsDto
                            {
                                Id = 0,
                                Activities = new List <ActivityDetailsDto>(),
                                LeadAddress = new LeadAddressDto
                                {
                                    Id = 0,
                                    ApartmentNumber = "",
                                    City = "",
                                    HouseNumber = "",
                                    PostCode = "",
                                    Province = "",
                                    Street = ""
                                },
                                LeadContacts = new List <LeadContactDto>(),
                                LeadStatus = "",
                                Name = "",
                                NIP = "",
                                Regon = "",
                                User = ""
                            },
                            CompanyTraders = responseTraders,
                            User = user.FirstName + " " + user.LastName
                        }
                    }));
                }

                var lead = await _leadRepository.GetLeadAsync(request.Id, request.CompanyId);

                if (lead.UserId != request.UserId)
                {
                    if (!(await PermissionMonitor.CheckPermissionsAsync(_userRepository, request.UserId, "Modyfikacja cudzych leadów")))
                    {
                        return(new JsonResult(new ApiResponse <object>
                        {
                            Data = null,
                            Code = 403,
                            ErrorMessage = "Brak uprawnień"
                        }));
                    }
                }

                if (lead != null)
                {
                    var leadResponse = new LeadForDetailsDto
                    {
                        Id           = lead.Id,
                        Activities   = new List <ActivityDetailsDto>(),
                        LeadContacts = new List <LeadContactDto>(),
                        LeadStatus   = lead.LeadStatus.Name,
                        Name         = lead.Name,
                        NIP          = lead.NIP,
                        Regon        = lead.Regon,
                        User         = lead.User.FirstName + " " + lead.User.LastName
                    };

                    leadResponse.LeadAddress = new LeadAddressDto
                    {
                        Id = lead.LeadAddress.Id,
                        ApartmentNumber = lead.LeadAddress.ApartmentNumber,
                        City            = lead.LeadAddress.City,
                        HouseNumber     = lead.LeadAddress.HouseNumber,
                        PostCode        = lead.LeadAddress.PostCode,
                        Province        = lead.LeadAddress.Province,
                        Street          = lead.LeadAddress.Street
                    };

                    var counter = 1;
                    foreach (var contact in lead.LeadContacts)
                    {
                        leadResponse.LeadContacts.Add(new LeadContactDto
                        {
                            Deleted     = false,
                            Department  = contact.Department,
                            Email       = contact.Email,
                            Id          = contact.Id,
                            LocalId     = counter,
                            Name        = contact.Name,
                            PhoneNumber = contact.PhoneNumber
                        });
                        counter++;
                    }

                    counter = 1;
                    foreach (var activity in lead.Activities)
                    {
                        leadResponse.Activities.Add(new ActivityDetailsDto
                        {
                            Deleted      = false,
                            ActivityDate = activity.ActivityDate,
                            ActivityType = activity.ActivityType.Name,
                            LocalId      = counter,
                            Id           = activity.Id,
                            User         = activity.User.FirstName + " " + activity.User.LastName
                        });
                        counter++;
                    }

                    return(new JsonResult(new ApiResponse <LeadDetailsDto>
                    {
                        Code = 200,
                        ErrorMessage = "",
                        Data = new LeadDetailsDto
                        {
                            Lead = leadResponse,
                            CompanyTraders = responseTraders,
                            User = user.FirstName + " " + user.LastName
                        }
                    }));
                }

                return(new JsonResult(new ApiResponse <object>
                {
                    Data = null,
                    Code = 404,
                    ErrorMessage = "Nie znaleziono leada o id=" + request.Id + ", skontaktuj się z działem IT."
                }));
            }
            catch
            {
                return(new JsonResult(new ApiResponse <object>
                {
                    Data = null,
                    Code = 500,
                    ErrorMessage = "Nastąpił problem z serwerem, skontaktuj się z działem IT."
                }));
            }
        }