예제 #1
0
        public FrayteResult SendPreAlertEmail(TradelanePreAlertInitial preAlerDetail)
        {
            var          emailModel = new TradelaneEmailRepository().TradelaneEmailObj(preAlerDetail.TradelaneShipmentId);
            FrayteResult result     = new TradelaneEmailRepository().SendEmail_E5(emailModel, preAlerDetail);

            return(result);
        }
        public IHttpActionResult PlaceBooking(TradelaneBooking shipment)
        {
            shipment = new TradelaneBookingRepository().SaveShipment(shipment, "");

            if (shipment.ShipmentStatusId != (int)FrayteTradelaneShipmentStatus.Draft)
            {
                TradelaneEmailModel model = new TradelaneEmailRepository().TradelaneEmailObj(shipment.TradelaneShipmentId);
                // Fill all the required info in the email model

                model.ShipmentDetail.ShipFrom.IsMailSend    = shipment.ShipFrom.IsMailSend;
                model.ShipmentDetail.ShipTo.IsMailSend      = shipment.ShipTo.IsMailSend;
                model.ShipmentDetail.NotifyParty.IsMailSend = shipment.NotifyParty.IsMailSend;

                new TradelaneEmailRepository().FillBookingInformationEmailModel(model);

                if (shipment.ShipmentStatusId == (int)FrayteTradelaneShipmentStatus.Pending)
                {
                    // Send Shipment info email created by
                    new TradelaneEmailRepository().SendEmail_E1(model);

                    // Send Booking Confirmation email to customer
                    new TradelaneEmailRepository().FillBookingConfirmationEmailModel(model);

                    new TradelaneEmailRepository().SendEmail_E2(model);
                }
                else
                {
                    // Customer Confirmation email
                    new TradelaneEmailRepository().SendEmail_E2_1(model);

                    // Send MAWB AllocationEMail
                    new TradelaneEmailRepository().FillModel_E3(model);

                    new TradelaneEmailRepository().SendEmail_E3(model);

                    // Add shipment tracking
                    new TradelaneBookingRepository().SaveShipmentTracking(shipment);

                    //  Add FLight Detail
                    new TradelaneBookingRepository().SaveShipmentFlightDetail(shipment);
                }
            }
            return(Ok(shipment));
        }
예제 #3
0
        public FrayteResult MawbCorrection(TradelaneClaimShipmentModel CorrectionModel)
        {
            FrayteResult FR = new FrayteResult();

            FR.Status = false;
            var Res    = new TradelaneEmailRepository().TradelaneEmailObj(CorrectionModel.TradelaneShipmentId);
            var MAList = dbContext.TradelaneShipmentAllocations.Where(a => a.TradelaneShipmentId == CorrectionModel.TradelaneShipmentId).ToList();
            var File   = GetLatestMawbDocuments(CorrectionModel.TradelaneShipmentId);

            if (Res.ShipmentDetail.ShipmentHandlerMethod.ShipmentHandlerMethodId == 5)
            {
                if (MAList.FirstOrDefault().AgentId > 0)
                {
                    new TradelaneEmailRepository().SendMawbCorrectionShipment(MAList.FirstOrDefault(), CorrectionModel, File.FilePath);
                }

                if (MAList.Skip(1).FirstOrDefault().AgentId > 0)
                {
                    new TradelaneEmailRepository().SendMawbCorrectionShipment(MAList.Skip(1).FirstOrDefault(), CorrectionModel, File.FilePath);
                }
                FR.Status = true;
            }
            else
            {
                if (MAList.FirstOrDefault().AgentId > 0)
                {
                    new TradelaneEmailRepository().SendMawbCorrectionShipment(MAList.FirstOrDefault(), CorrectionModel, File.FilePath);
                }
                FR.Status = true;
            }

            if (FR.Status == true)
            {
                var Result = dbContext.TradelaneShipments.Where(a => a.TradelaneShipmentId == CorrectionModel.TradelaneShipmentId).FirstOrDefault();
                if (Result != null)
                {
                    Result.IsMawbCorrection       = true;
                    dbContext.Entry(Result).State = System.Data.Entity.EntityState.Modified;
                    dbContext.SaveChanges();
                }
            }
            return(FR);
        }
예제 #4
0
        public TradelaneAgentEmailModel GetAgentsMail(int TradelaneShipmentId)
        {
            TradelaneAgentEmailModel AE = new TradelaneAgentEmailModel();
            var Res = new TradelaneEmailRepository().TradelaneEmailObj(TradelaneShipmentId);

            var AgentName     = "";
            var CreatedByMail = "";
            var CreatedBy     = (from Usr in dbContext.Users
                                 join usrAdd in dbContext.UserAdditionals on Usr.UserId equals usrAdd.UserId
                                 join Usr1 in dbContext.Users on usrAdd.OperationUserId equals Usr1.UserId
                                 where Usr.UserId == Res.ShipmentDetail.CustomerId
                                 select new
            {
                Usr1.Email
            }).FirstOrDefault();

            if (CreatedBy != null)
            {
                AE.staff = CreatedBy.Email;
            }

            if (Res.ShipmentDetail.ShipmentHandlerMethod.ShipmentHandlerMethodId == 5)
            {
                var Leg1Agent = dbContext.TradelaneShipmentAllocations.Where(a => a.TradelaneShipmentId == Res.ShipmentDetail.TradelaneShipmentId && a.LegNum == "Leg1").FirstOrDefault();
                if (Leg1Agent != null)
                {
                    var AgentDetail1 = (from Usr in dbContext.Users
                                        where Usr.UserId == Leg1Agent.AgentId
                                        select new
                    {
                        Usr.Email,
                        Usr.ContactName
                    }).FirstOrDefault();

                    if (AgentDetail1 != null)
                    {
                        AE.Agent     = AgentDetail1.Email;
                        AE.AgentName = AgentDetail1.ContactName;
                    }
                }
                var Leg2Agent = dbContext.TradelaneShipmentAllocations.Where(a => a.TradelaneShipmentId == Res.ShipmentDetail.TradelaneShipmentId && a.LegNum == "Leg2").FirstOrDefault();
                if (Leg2Agent != null)
                {
                    var AgentDetail2 = (from Usr in dbContext.Users
                                        where Usr.UserId == Leg2Agent.AgentId
                                        select new
                    {
                        Usr.Email,
                        Usr.ContactName
                    }).FirstOrDefault();

                    if (AgentDetail2 != null)
                    {
                        AE.Agent     = AE.Agent + ", " + AgentDetail2.Email;
                        AE.AgentName = AgentDetail2.ContactName;
                    }
                }
            }
            else
            {
                var LegAgent = dbContext.TradelaneShipmentAllocations.Where(a => a.TradelaneShipmentId == Res.ShipmentDetail.TradelaneShipmentId).FirstOrDefault();
                if (LegAgent != null)
                {
                    var AgentDetail = (from Usr in dbContext.Users
                                       where Usr.UserId == LegAgent.AgentId
                                       select new
                    {
                        Usr.Email,
                        Usr.ContactName
                    }).FirstOrDefault();

                    if (AgentDetail != null)
                    {
                        AE.Agent     = AgentDetail.Email;
                        AE.AgentName = AgentDetail.ContactName;
                    }
                }
            }
            return(AE);
        }
예제 #5
0
        public IHttpActionResult SaveTradelaneIntegration(ExpressTradelaneIntegration integratedShipment)
        {
            TradelaneBooking shipment = new TradelaneBooking();

            new ExpressManifestRepository().MapIntegratedShipmentToTradelaneShipment(integratedShipment, shipment);
            TradelaneBooking dbShipment = new TradelaneBookingRepository().SaveShipment(shipment, "Express");

            if (!dbShipment.Error.Status)
            {
                TradelaneEmailModel model = new TradelaneEmailRepository().TradelaneEmailObj(dbShipment.TradelaneShipmentId);
                // Fill all the required info in the email model
                integratedShipment.MAWBList.FirstOrDefault().TradelaneId = dbShipment.TradelaneShipmentId;
                // model.ShipmentDetail.ShipFrom = new TradelBookingAdress();
                model.ShipmentDetail.ShipFrom.IsMailSend = dbShipment.ShipFrom.IsMailSend;
                //  model.ShipmentDetail.ShipTo = new TradelBookingAdress();
                model.ShipmentDetail.ShipTo.IsMailSend      = dbShipment.ShipTo.IsMailSend;
                model.ShipmentDetail.NotifyParty.IsMailSend = dbShipment.NotifyParty.IsMailSend;

                new TradelaneEmailRepository().FillBookingInformationEmailModel(model);
                // Update Status for AWB
                // Send Shipment info email created by
                //  new TradelaneEmailRepository().SendEmail_E1(model);

                // Customer Confirmation email
                new TradelaneEmailRepository().SendEmail_E2_1(model);

                // Send MAWB AllocationEMail
                new TradelaneEmailRepository().FillModel_E3(model);
                new TradelaneEmailRepository().SendEmail_E3(model);


                // Add shipment tracking
                new TradelaneBookingRepository().SaveShipmentTracking(shipment);
                //  Add FLight Detail
                new TradelaneBookingRepository().SaveShipmentFlightDetail(shipment);
                new ExpressManifestRepository().UpdateExpressShipmentStatus(integratedShipment.Shipment.Packages);

                // Update MAWBAllocation
                var File     = new TradelaneShipmentsController().CreateDocument(dbShipment.TradelaneShipmentId, 0, FrayteTradelaneShipmentDocumentEnum.CoLoadForm, "");
                var FilePath = AppSettings.UploadFolderPath + "/Tradelane" + "/" + integratedShipment.MAWBList.FirstOrDefault().TradelaneId + "/" + File.FileName;
                if (File.FileName != null && File.FileName != "")
                {
                }
                else
                {
                    FilePath = "";
                }

                new MawbAllocationRepository().SaveExpressMawbAllocation(integratedShipment.MAWBList, FilePath, "Express");

                // update tradelane Shipment id  in express  table
                new ExpressManifestRepository().SaveExportManifest(dbShipment.TradelaneShipmentId, integratedShipment.Shipment);

                var file = new TradelaneShipmentsController().CreateDocument(dbShipment.TradelaneShipmentId, 0, FrayteTradelaneShipmentDocumentEnum.ExportManifest, "");
                new TradelaneBookingRepository().SaveShipmentDocument(dbShipment.TradelaneShipmentId, FrayteTradelaneShipmentDocumentEnum.ExportManifest, file.FileName, integratedShipment.Shipment.CreatedBy);

                var file1 = new TradelaneShipmentsController().CreateDocument(dbShipment.TradelaneShipmentId, dbShipment.CreatedBy, FrayteTradelaneShipmentDocumentEnum.DriverManifest, "");
                new TradelaneBookingRepository().SaveShipmentDocument(dbShipment.TradelaneShipmentId, FrayteTradelaneShipmentDocumentEnum.DriverManifest, file1.FileName, integratedShipment.Shipment.CreatedBy);

                new MawbAllocationRepository().SendMawbAllocationMail(integratedShipment.MAWBList, FilePath, "Express");
            }
            return(Ok(integratedShipment));
        }
        public IHttpActionResult CustomerAction(FrayteCustomerActionShippment confirmationDetail)
        {
            try
            {
                int shipmentId = new TradelaneBookingRepository().CustomerAction(confirmationDetail);

                if (shipmentId > 0)
                {
                    TradelaneEmailRepository shipmentEmailRepo = new TradelaneEmailRepository();

                    TradelaneEmailModel emailModel = shipmentEmailRepo.TradelaneEmailObj(shipmentId);

                    if (emailModel != null)
                    {
                        new TradelaneEmailRepository().FillBookingInformationEmailModel(emailModel);

                        if (emailModel.ShipmentDetail.ShipmentStatusId == (int)FrayteTradelaneShipmentStatus.ShipmentBooked)
                        {
                            return(Ok("AlreadyConfirmed"));
                        }
                        else if (emailModel.ShipmentDetail.ShipmentStatusId == (int)FrayteTradelaneShipmentStatus.Rejected)
                        {
                            return(Ok("AlreadyRejected"));
                        }
                        else
                        {
                            if (confirmationDetail.ActionType == ShipmentCustomerAction.Confirm)
                            {
                                // set  shipment confirm status
                                new TradelaneBookingRepository().SetShipmentStatus(shipmentId, confirmationDetail.ActionType);

                                //Customer Confirmation email
                                shipmentEmailRepo.SendEmail_E2_1(emailModel);

                                //Thank you email to customer
                                shipmentEmailRepo.SendEmail_E2_3(emailModel);

                                //MAWB allocation email
                                shipmentEmailRepo.SendEmail_E3(emailModel);

                                //Add shipment tracking
                                new TradelaneBookingRepository().SaveShipmentTracking(emailModel.ShipmentDetail);

                                //Add FLight Detail
                                new TradelaneBookingRepository().SaveShipmentFlightDetail(emailModel.ShipmentDetail);
                            }
                            else if (confirmationDetail.ActionType == ShipmentCustomerAction.Reject)
                            {
                                //Set shipment rejected status
                                new TradelaneBookingRepository().SetShipmentStatus(shipmentId, confirmationDetail.ActionType);

                                //Customer Rejection email
                                shipmentEmailRepo.SendEmail_E2_2(emailModel);
                            }
                            return(Ok());
                        }
                    }
                    return(BadRequest());
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
예제 #7
0
        public FrayteResult SaveTradelaneShipmentTracking(TradelaneOperationslTrackingModel TM)
        {
            FrayteResult FR = new FrayteResult();

            FR.Status = false;
            var Result = dbContext.TradelaneShipmentTrackings.Where(a => a.TradelaneShipmentTrackingId == TM.TradelaneShipmentTrackingId).FirstOrDefault();

            if (Result != null)
            {
                Result.TradlaneShipmentId  = TM.TradelaneShipmentId;
                Result.TrackingDescription = TM.TrackingDescription;
                Result.TrackingCode        = TM.TrackingCode;
                Result.CreatedOnUtc        = TM.CreatedOnUtc;
                Result.FlightNumber        = TM.FlightNo;
                Result.CreatedBy           = TM.CreatedBy;
                Result.Weight                 = TM.Weight;
                Result.Pieces                 = TM.Pieces;
                Result.AirportCode            = TM.AirportCode;
                dbContext.Entry(Result).State = System.Data.Entity.EntityState.Modified;
                dbContext.SaveChanges();
                //if(Result.TrackingCode == "DLV")
                //{
                //    var res = dbContext.TradelaneShipments.Where(a => a.TradelaneShipmentId == TM.TradelaneShipmentId).FirstOrDefault();
                //    if(res != null)
                //    {
                //        res.ShipmentStatusId = 35;
                //        dbContext.Entry(res).State = System.Data.Entity.EntityState.Modified;
                //        dbContext.SaveChanges();
                //    }
                //}

                FR.Status = true;
            }
            else
            {
                TradelaneShipmentTracking TlST = new TradelaneShipmentTracking();
                TlST.TradlaneShipmentId  = TM.TradelaneShipmentId;
                TlST.TrackingDescription = TM.TrackingDescription;
                TlST.TrackingCode        = TM.TrackingCode;
                TlST.FlightNumber        = TM.FlightNo;
                TlST.CreatedOnUtc        = DateTime.UtcNow;
                TlST.CreatedBy           = TM.CreatedBy;
                TlST.AirportCode         = TM.AirportCode;
                TlST.Weight = TM.Weight;
                TlST.Pieces = TM.Pieces;
                dbContext.TradelaneShipmentTrackings.Add(TlST);
                dbContext.SaveChanges();
                if (TM.TrackingCode == "DEP")
                {
                    var res = dbContext.TradelaneShipments.Where(a => a.TradelaneShipmentId == TM.TradelaneShipmentId).FirstOrDefault();
                    if (res != null)
                    {
                        res.ShipmentStatusId = 30;
                        //res.ShipmentStatusId = 31;
                        res.IsMawbCorrection       = false;
                        dbContext.Entry(res).State = System.Data.Entity.EntityState.Modified;
                        dbContext.SaveChanges();
                    }
                }
                if (TM.TrackingCode == "INT")
                {
                    var res = dbContext.TradelaneShipments.Where(a => a.TradelaneShipmentId == TM.TradelaneShipmentId).FirstOrDefault();
                    if (res != null)
                    {
                        res.ShipmentStatusId       = 31;
                        res.IsMawbCorrection       = false;
                        dbContext.Entry(res).State = System.Data.Entity.EntityState.Modified;
                        dbContext.SaveChanges();
                    }
                }
                if (TM.TrackingCode == "ARV")
                {
                    var res = dbContext.TradelaneShipments.Where(a => a.TradelaneShipmentId == TM.TradelaneShipmentId).FirstOrDefault();
                    if (res != null)
                    {
                        res.ShipmentStatusId = 32;
                        //res.ShipmentStatusId = 31;
                        res.IsMawbCorrection       = false;
                        dbContext.Entry(res).State = System.Data.Entity.EntityState.Modified;
                        dbContext.SaveChanges();
                    }
                }
                if (TM.TrackingCode == "DLV")
                {
                    var res = dbContext.TradelaneShipments.Where(a => a.TradelaneShipmentId == TM.TradelaneShipmentId).FirstOrDefault();
                    if (res != null)
                    {
                        res.ShipmentStatusId       = 35;
                        res.IsMawbCorrection       = false;
                        dbContext.Entry(res).State = System.Data.Entity.EntityState.Modified;
                        dbContext.SaveChanges();
                    }

                    // Update Express AWB status if status is delivered

                    new ExpressManifestRepository().UpdateExpressAWbStatus(TM.TradelaneShipmentId);
                }
                FR.Status = true;
                //send mail of add tracking
                if (FR.Status)
                {
                    var Res = new TradelaneEmailRepository().SendUpdateTrackingEmail(TM);
                    if (Res.Status == false)
                    {
                        //FR.Errors = new List<string>();
                        //FR.Errors.Add("Email does not exist for this Operational Status in tracking configuration");
                        //DeleteTradelaneOperationalTracking(TlST.TradelaneShipmentTrackingId);
                    }
                }
            }
            return(FR);
        }