Ejemplo n.º 1
0
     public bool Equals(AssociationTravelAgency other)
     {
         if (ReferenceEquals(null, other)) return false;
         if (ReferenceEquals(this, other)) return true;
 		if (other.Id == 0 && Id == 0)
 			return false;
 		else
 			return other.Id == Id;
     }
     private void FixupTravelAgency(AssociationTravelAgency previousValue)
     {
         if (IsDeserializing)
         {
             return;
         }
 
         if (previousValue != null && previousValue.AssociationUserTravelAgencyRoles.Contains(this))
         {
             previousValue.AssociationUserTravelAgencyRoles.Remove(this);
         }
 
         if (TravelAgency != null)
         {
             if (!TravelAgency.AssociationUserTravelAgencyRoles.Contains(this))
             {
                 TravelAgency.AssociationUserTravelAgencyRoles.Add(this);
             }
 
             AgencyId = TravelAgency.Id;
         }
         if (ChangeTracker.ChangeTrackingEnabled)
         {
             if (ChangeTracker.OriginalValues.ContainsKey("TravelAgency")
                 && (ChangeTracker.OriginalValues["TravelAgency"] == TravelAgency))
             {
                 ChangeTracker.OriginalValues.Remove("TravelAgency");
             }
             else
             {
                 ChangeTracker.RecordOriginalValue("TravelAgency", previousValue);
             }
             if (TravelAgency != null && !TravelAgency.ChangeTracker.ChangeTrackingEnabled)
             {
                 TravelAgency.StartTracking();
             }
         }
     }
Ejemplo n.º 3
0
        public AssociationTravelAgency SaveTravelAgency(AssociationTravelAgency agency)
        {
            if (!Roles.IsUserInRole(RoleName.StaffUser))
                throw new SecurityException();

            using (var db = new LomsContext())
            {
                db.Connection.Open();

                using (var transaction = db.Connection.BeginTransaction())
                {
                    db.AssociationTravelAgencies.ApplyChanges(agency);
                    db.SaveChanges();

                    var managerRole = (from r in db.AssociationUserTravelAgencyRoles
                                       where r.AgencyId == agency.Id && r.RoleId == (int)TravelAgencyRole.Manager
                                       select r).SingleOrDefault();

                    if (agency.ManagerId == 0)
                    {
                        if (managerRole != null)
                        {
                            //make current manager supervisor
                            managerRole.Role = TravelAgencyRole.Supervisor;
                            db.AssociationUserTravelAgencyRoles.ApplyChanges(managerRole);
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        bool createNewRole = false;
                        if (managerRole != null && managerRole.UserId != agency.ManagerId)
                        {
                            //make current manager supervisor
                            managerRole.Role = TravelAgencyRole.Supervisor;
                            db.AssociationUserTravelAgencyRoles.ApplyChanges(managerRole);

                            var userRole = db.AssociationUserTravelAgencyRoles.SingleOrDefault(r => r.UserId == agency.ManagerId);
                            if (userRole != null)
                            {
                                db.AssociationUserTravelAgencyRoles.DeleteObject(userRole);
                                db.SaveChanges();
                            }

                            createNewRole = true;
                        }
                        else if (managerRole == null)
                            createNewRole = true;

                        if (createNewRole)
                        {
                            managerRole = new AssociationUserTravelAgencyRole()
                            {
                                UserId = agency.ManagerId.Value,
                                AgencyId = agency.Id,
                                Role = TravelAgencyRole.Manager,
                                Status = TravelAgencyStatus.Accepted
                            };

                            db.AssociationUserTravelAgencyRoles.ApplyChanges(managerRole);
                            db.SaveChanges();

                            var emailProvider = db.AssociationEmails.FirstOrDefault(e => e.AssociationId == CurrentAssociationId);
                            if (emailProvider != null)
                            {
                                var association = db.Associations.FirstOrDefault(a => a.Id == CurrentAssociationId);
                                var user = db.AssociationUsers.SingleOrDefault(u => u.Id == managerRole.UserId);

                                var uri = HttpContext.Current.Request.Url;

                                string baseUrl = String.Format("{0}://{1}:{2}", uri.Scheme, uri.Host ?? "80", uri.Port);
                                string contactUsLink = Path.Combine(baseUrl + "/#Contact");

                                var emailTemplate = new EmailTemplate("ExistingTravelAgentIsAddedAsTravelManager");
                                emailTemplate["UserName"] = user.FullName.ToUpper();
                                emailTemplate["TravelAgencyName"] = agency.Name.ToUpper();
                                emailTemplate["AssociationName"] = association.Name.ToUpper();
                                emailTemplate["ContactUsLink"] = contactUsLink;

                                var avBody = AlternateView.CreateAlternateViewFromString(emailTemplate.Html, null, MediaTypeNames.Text.Html);
                                emailProvider.SendMail(user.Email, association.Name.ToUpper() + " Travel Agency Manager", emailTemplate.Txt, null, avBody, true);
                            }
                        }
                    }
                    transaction.Commit();
                }
            }

            using (var db = new LomsContext())
            {
                agency = db.AssociationTravelAgencies.IncludeAll("Country", "State", "State.Country", "Suburb", "Suburb.Country", "Suburb.State", "Suburb.State.Country", "Manager")
                          .SingleOrDefault(a => a.Id == agency.Id);
            }

            return agency;
        }
Ejemplo n.º 4
0
        public void RemoveTravelAgency(int agencyId)
        {
            if (!Roles.IsUserInRole(RoleName.StaffUser))
                throw new SecurityException();

            using (var db = new LomsContext())
            {
                var agency = new AssociationTravelAgency() { Id = agencyId };
                db.AssociationTravelAgencies.Attach(agency);
                db.AssociationTravelAgencies.DeleteObject(agency);
                db.SaveChanges();
            }
        }
Ejemplo n.º 5
0
        private void OpenTravelAgencyWindow(AssociationTravelAgency agency, bool isAdd)
        {
            ////var viewModel = Kernel.Get<TravelAgencyChildWindowViewModel>();
            ////var view = Kernel.Get<TravelAgencyChildWindow>();
            var viewModel = Kernel.Get<TravelAgencyChildWindowViewModel>();
            var view = Kernel.Get<AddTravelAgencyPopup>();

            viewModel.IsAdd = isAdd;
            viewModel.TravelAgency = agency;
            view.DataContext = viewModel;

            viewModel.Completed += (o, e) =>
            {
                view.Close();
                TravelAgencies.Replace(e.Value);
                SelectedTravelAgency = e.Value;
            };

            view.Show();
        }
Ejemplo n.º 6
0
        public AssociationTravelAgency SaveTravelAgency(AssociationTravelAgency agency)
        {
            if (!Roles.IsUserInRole(RoleName.StaffUser))
                throw new SecurityException();

            using (TransactionScope scope = new TransactionScope())
            using (var db = new LomsContext())
            {
                if (agency.Suburb != null)
                {
                    agency.Country = null;
                    agency.State = null;
                }
                else if (agency.State != null)
                    agency.Country = null;

                agency.AssociationId = CurrentAssociationId;

                db.AssociationTravelAgencies.ApplyChanges(agency);
                db.SaveChanges();

                var managerRole = (from r in db.AssociationUserTravelAgencyRoles
                                   where r.AgencyId == agency.Id && r.RoleId == (int)TravelAgencyRole.Manager
                                   select r).
                 SingleOrDefault();

                if (agency.ManagerId == 0)
                {
                    if (managerRole != null)
                    {
                        //make current manager supervisor
                        managerRole.Role = TravelAgencyRole.Supervisor;
                        db.AssociationUserTravelAgencyRoles.ApplyChanges(managerRole);
                        db.SaveChanges();
                    }
                }
                else
                {
                    bool createNewRole = false;
                    if (managerRole != null && managerRole.UserId != agency.ManagerId)
                    {
                        //make current manager supervisor
                        managerRole.Role = TravelAgencyRole.Supervisor;
                        db.AssociationUserTravelAgencyRoles.ApplyChanges(managerRole);

                        var userRole = (from r in db.AssociationUserTravelAgencyRoles
                                        where r.UserId == agency.ManagerId
                                        select r).
                                         SingleOrDefault();

                        if (userRole != null)
                            db.AssociationUserTravelAgencyRoles.DeleteObject(userRole);

                        createNewRole = true;
                    }
                    else if (managerRole == null)
                        createNewRole = true;

                    if (createNewRole)
                    {
                        managerRole = new AssociationUserTravelAgencyRole()
                        {
                            UserId = agency.ManagerId.Value,
                            AgencyId = agency.Id,
                            Role = TravelAgencyRole.Manager,
                            Status = TravelAgencyStatus.Accepted
                        };

                        db.AssociationUserTravelAgencyRoles.ApplyChanges(managerRole);
                        db.SaveChanges();

                        //send letter
                        var emailProvider = (from e in db.AssociationEmails
                                             where e.AssociationId == agency.AssociationId
                                             select e)
                                    .FirstOrDefault();

                        if (emailProvider != null)
                        {
                            var association = (from a in db.Associations
                                               where a.Id == agency.AssociationId
                                               select a)
                                             .SingleOrDefault();

                            var user = (from a in db.AssociationUsers
                                        where a.Id == managerRole.UserId
                                        select a)
                                             .SingleOrDefault();

                            var request = HttpContext.Current.Request;
                            var uri = request.Url;
                            string baseUrl = String.Format("{0}://{1}:{2}", uri.Scheme, uri.Host ?? "80", uri.Port);
                            string contactUsLink = Path.Combine(baseUrl + "/#Contact");

                            var txtContent = MailTemplateHelper.GetExistingTravelAgentIsAddedAsTravelManagerTxtContent(association.Name.ToUpper(), user.FullName.ToUpper(), contactUsLink, agency.Name);
                            var htmlContent = MailTemplateHelper.GetExistingTravelAgentIsAddedAsTravelManagerHtmlContent(association.Name.ToUpper(), user.FullName.ToUpper(), contactUsLink, agency.Name);
                            var avBody = AlternateView.CreateAlternateViewFromString(htmlContent, null, MediaTypeNames.Text.Html);

                            emailProvider.SendMail(user.Email, association.Name.ToUpper() + " Travel Agency Manager", txtContent, null, avBody, true);
                        }
                    }
                }

                agency = db.AssociationTravelAgencies.IncludeAll("Country", "State", "State.Country", "Suburb", "Suburb.Country", "Suburb.State", "Suburb.State.Country")
                    .FirstOrDefault(a => a.Id == agency.Id);

                scope.Complete();

                return agency;
            }
        }