Ejemplo n.º 1
0
        public async Task <ActionResult> Edit(int?id)
        {
            var restroomModel = new RestroomViewModel();

            try
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                using (var service = new RestroomService())
                {
                    var pendingReviewRestrooms = await service.GetRestroomForReviewAsync(id.Value);

                    if (pendingReviewRestrooms == null)
                    {
                        return(HttpNotFound());
                    }
                    else
                    {
                        //The last record contains the current approved version of the restroom
                        restroomModel.CurrentRestroom = pendingReviewRestrooms.LastOrDefault();

                        //Remaining records contain unapproved versions of the restroom
                        restroomModel.ReviewRestrooms = pendingReviewRestrooms.Take(pendingReviewRestrooms.Count() - 1);
                    }
                }

                using (var contactService = new ContactService())
                {
                    restroomModel.RestroomContacts = await contactService.GetContactsAsync(new ContactSearchContext
                    {
                        SortField     = "ServiceProvider",
                        SortDirection = System.Web.Helpers.SortDirection.Ascending,
                        PageNumber    = 1,
                        PageSize      = 1
                    });
                }

                if (restroomModel.CurrentRestroom?.ContactId != null)
                {
                    restroomModel.CurrentContact = restroomModel.RestroomContacts.FirstOrDefault(c =>
                                                                                                 c.ContactId == (int)restroomModel.CurrentRestroom.ContactId) ??
                                                   new RestroomContact();
                }

                var toiletGenders = new RestroomService().GetToiletGenders();
                if (restroomModel.CurrentRestroom?.ToiletGenderId != null && restroomModel.CurrentRestroom.ToiletGenderId != 0)
                {
                    foreach (var gender in toiletGenders)
                    {
                        if ((restroomModel.CurrentRestroom.ToiletGenderId & (int)RestroomEnums.ToiletGender.Men) == Convert.ToInt32(gender.Value))
                        {
                            gender.Selected = true;
                        }
                        else if ((restroomModel.CurrentRestroom.ToiletGenderId & (int)RestroomEnums.ToiletGender.Women) == Convert.ToInt32(gender.Value))
                        {
                            gender.Selected = true;
                        }
                        else if ((restroomModel.CurrentRestroom.ToiletGenderId & (int)RestroomEnums.ToiletGender.GenderNeutral) == Convert.ToInt32(gender.Value))
                        {
                            gender.Selected = true;
                        }
                    }
                }
                restroomModel.ToiletGenders = toiletGenders;

                return(View(restroomModel));
            }
            catch (Exception ex)
            {
                Logger.WriteError("ACTransit.RestroomFinder.Web.RestroomController.Edit", ex);
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
            }
        }