Untitled

 avatar
unknown
csharp
2 months ago
5.7 kB
4
Indexable
    private async Task<SendTaskToTabletResponse> SendToUser(ITaskRepository taskRepository, IEventRepository eventRepository, ITeamRepository teamRepository, ISettingsRepository settingsRepository, IEventFlowRepository eventFlowRepository, IMapper mapper, ISMSService sMsService, IEngineeringCompanyService engineeringCompanyService, SaveSendingTeamsCommand request, SendTaskToTabletResponse saveResult)
    {
        var team = await teamRepository.GetByIdWithVehicleCartable(request.TeamId);

        var mapperTblEventFlow = mapper.Map<TblEventFlow>(request);
        mapperTblEventFlow.FlowDate = Utilities.Utilities.ToPersianDateString(DateTime.Now, true);
        mapperTblEventFlow.FlowTime = DateTime.Now.ToString("HH:mm");
        mapperTblEventFlow.IsLatest = true;
        if (!request.IsCustomUser.HasValue || !request.IsCustomUser.Value)
        {
            mapperTblEventFlow.ManualReferenced = true;
        }
        else
            mapperTblEventFlow.ManualReferenced = false;
        mapperTblEventFlow.FlowStatus = 0;
        if (team != null && request.HasCartableDevice)
        {
            mapperTblEventFlow.ToUser = (int)team.SpecialistId!;
            mapperTblEventFlow.Imei =
                Convert.ToString(team.Vehicle.VehicleImei != null
                    ? team.Vehicle.VehicleImei
                    : team.Cartable.FamTeamId);
            if (team is { Specialist: not null, Driver: not null })
                mapperTblEventFlow.EquippeNames = team.Specialist.UserName + ", " + team.Driver.UserName;


            var tblEventFlow = await eventFlowRepository.AddAsync(mapperTblEventFlow);

            await taskRepository.SetPreviousTasksLatestStatusAsync(request.EventInsId);

            var mapperTblTask = mapper.Map<TblTask>(request);
            mapperTblTask.EventFlowId = tblEventFlow.Id;
            mapperTblTask.TaskStartDate = Utilities.Utilities.ToPersianDateString(DateTime.Now, true);
            mapperTblTask.TaskStartTime = DateTime.Now.ToString("HH:mm");
            mapperTblTask.TaskStartDateTime = DateTime.Now;
            mapperTblTask.IsDeleted = false;
            mapperTblTask.TaskStatus = (int)TaskStatus.ToBeDelivered;
            mapperTblTask.NotDoneByEquippe = false;
            mapperTblTask.IsLatest = true;
            mapperTblTask.IsScheduled = false;
            mapperTblTask.CanSetLocationManually = false;
            mapperTblTask.InsertDateTime = DateTime.Now;
            var tblTask = await taskRepository.AddAsync(mapperTblTask);

            TblEventIns? tblevent = await eventRepository.GetByIdAsync(request.EventInsId);
            if (tblevent != null)
            {
                tblevent.EventStatusId = (int)EventStatus.Inprogress;
                await eventRepository.UpdateAsync(tblevent);
            }

            //should resolve dependency on engineeringCompanyService
            EventChangeNotifier.Exec(tblevent.Id, engineeringCompanyService);

            saveResult.SendTaskToTablet.TaskId = tblTask.Id;
            saveResult.SendTaskToTablet.EventFlowID = tblEventFlow.Id;
            saveResult.SendTaskToTablet.TeamID = request.TeamId;
            saveResult.SendTaskToTablet.OutageEventID = request.EventInsId;
        }
        else
        {
            var @event = eventRepository.Get(on => on.Id == request.EventInsId).Select(t => new { t.ConsumerIns.MobileNo, t.ConsumerIns.ConsumerTel, t.ConsumerIns.ConsumerName }).FirstOrDefault();
            RecipientInfo[] Recipients =
                                    {
                                                        new()
                                                        {
                                                      FullName = @event.ConsumerName,
                                    PhoneNumber =  !string.IsNullOrWhiteSpace(@event.MobileNo)
                                        ? @event.MobileNo
                                        : !string.IsNullOrWhiteSpace(@event.ConsumerTel)
                                            ? @event.ConsumerTel.StartsWith("09") ||
                                             @event.ConsumerTel.StartsWith("9")
                                                ? @event.ConsumerTel
                                                : ""
                                            : ""
                                    }
                                };
            var setting = await settingsRepository.GetByNameEnAsync("MessageBodyAfterSendingTeam");
            if (setting != null && !string.IsNullOrWhiteSpace(setting.Value))
            {
                MessageRecipientInfo[] messageRecipientInfos =
                              {
                                            new()
                                            {
                                                MessageText = string.Format(setting.Value,request.EventInsId),
                                               // $"مشترک گرامی اکیپ امداد برای حادثه شماره {request.EventInsId} اعزام شد مرکز ۱۲۲ شرکت آب و فاضلاب استان تهران",
                                                Sender = _smservicesettings.FaultDetectorSender,
                                                Recipients = Recipients
                                            }
                                        };
                var message = new MessageRecipients
                {
                    messageList = messageRecipientInfos,
                    requiresReply = false
                };
                sMsService.SendMessage(message);
            }

        }
        return saveResult;
    }
Editor is loading...
Leave a Comment